Merge "Remove dependency on ModuleTestUtils"
diff --git a/Android.bp b/Android.bp
index 9c33106..fdf38c6 100644
--- a/Android.bp
+++ b/Android.bp
@@ -447,7 +447,6 @@
     name: "framework-internal-utils",
     static_libs: [
         "apex_aidl_interface-java",
-        "suspend_control_aidl_interface-java",
         "framework-protos",
         "updatable-driver-protos",
         "android.hidl.base-V1.0-java",
@@ -480,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",
@@ -572,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",
@@ -669,6 +671,7 @@
 
     srcs: [
         ":ipconnectivity-proto-src",
+        ":libstats_atom_enum_protos",
         "core/proto/**/*.proto",
         "libs/incident/**/*.proto",
     ],
@@ -695,6 +698,7 @@
 
     srcs: [
         ":ipconnectivity-proto-src",
+        ":libstats_atom_enum_protos",
         "core/proto/**/*.proto",
         "libs/incident/**/*.proto",
     ],
@@ -743,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",
     ],
 }
@@ -809,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: {
@@ -838,6 +848,7 @@
     sdk_version: "9",
     srcs: [
         ":ipconnectivity-proto-src",
+        ":libstats_atom_enum_protos",
         "core/proto/**/*.proto",
         "libs/incident/proto/android/os/**/*.proto",
     ],
@@ -853,6 +864,7 @@
 
     srcs: [
         ":ipconnectivity-proto-src",
+        ":libstats_atom_enum_protos",
         "core/proto/**/*.proto",
         "libs/incident/proto/android/os/**/*.proto",
     ],
@@ -873,7 +885,9 @@
 
     proto: {
         export_proto_headers: true,
-        include_dirs: ["external/protobuf/src"],
+        include_dirs: [
+            "external/protobuf/src",
+        ],
     },
 
     cflags: [
@@ -884,6 +898,7 @@
 
     srcs: [
         ":ipconnectivity-proto-src",
+        ":libstats_atom_enum_protos",
         "core/proto/**/*.proto",
     ],
 }
@@ -1155,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",
@@ -1236,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",
diff --git a/StubLibraries.bp b/StubLibraries.bp
index aabf23b..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,7 +41,7 @@
 ]
 
 stubs_defaults {
-    name: "metalava-base-api-stubs-default",
+    name: "metalava-non-updatable-api-stubs-default",
     srcs: [
         ":framework-non-updatable-sources",
         "core/java/**/*.logtags",
@@ -51,9 +51,14 @@
         ":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",
+        ],
     },
     // 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.
@@ -72,6 +77,12 @@
         "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,
@@ -84,67 +95,13 @@
     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"],
-    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",
-        },
-    },
-}
-
 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: {
@@ -163,48 +120,26 @@
     },
 }
 
-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"],
-    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",
-        },
-    },
-}
+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: {
@@ -225,24 +160,17 @@
 }
 
 droidstubs {
-    name: "test-api-stubs-docs",
+    name: "test-api-stubs-docs-non-updatable",
     defaults: ["metalava-non-updatable-api-stubs-default"],
-    arg_files: [
-        "core/res/AndroidManifest.xml",
-    ],
-    args: metalava_framework_docs_args
-        + " --show-annotation android.annotation.TestApi"
-        + " --show-for-stub-purposes-annotation android.annotation.SystemApi\\("
-        +     "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS"
-        + "\\)",
+    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: {
@@ -252,16 +180,10 @@
     },
 }
 
-/////////////////////////////////////////////////////////////////////
-// Following droidstub module for extra APIs for modules,
-// namely @SystemApi(client=MODULE_LIBRARIES) APIs.
-/////////////////////////////////////////////////////////////////////
-
 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: "core/api/module-lib-current.txt",
@@ -280,7 +202,7 @@
 
 /////////////////////////////////////////////////////////////////////
 // android_*_stubs_current modules are the stubs libraries compiled
-// from *-api-stubs-docs
+// from stub sources
 /////////////////////////////////////////////////////////////////////
 
 java_defaults {
@@ -312,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",
@@ -332,6 +247,23 @@
         "framework-wifi.stubs",
         "private-stub-annotations-jar",
     ],
+    defaults: ["android_defaults_stubs_current"],
+}
+
+java_library_static {
+    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",
@@ -350,46 +282,8 @@
 }
 
 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" ],
-    defaults: [
-        "android_defaults_stubs_current",
-    ],
-}
-
-java_library_static {
-    name: "android_system_merged_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"],
-}
-
-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" ],
+    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.
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/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/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/api/Android.bp b/api/Android.bp
index 4d7f58e..471b993 100644
--- a/api/Android.bp
+++ b/api/Android.bp
@@ -19,7 +19,7 @@
 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"],
@@ -57,6 +57,25 @@
 }
 
 genrule {
+    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}",
diff --git a/api/current.txt b/api/current.txt
deleted file mode 100644
index c2e75cd..0000000
--- a/api/current.txt
+++ /dev/null
@@ -1,82379 +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 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 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 @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 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(@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 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_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 @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_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 {
-    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_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 @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 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 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/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/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 dc90877..0000000
--- a/api/system-current.txt
+++ /dev/null
@@ -1,13158 +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_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 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 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 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_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 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 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 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 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 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 @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 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 @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 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 setMobileDataPolicyEnabledStatus(int, 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 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 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 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 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 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
-  }
-
-  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 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 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 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 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 class SipDelegateManager {
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isSupported() 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 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);
-  }
-
-  public class SipTransportImplBase {
-    ctor public SipTransportImplBase(@NonNull java.util.concurrent.Executor);
-  }
-
-}
-
-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 8616961..0000000
--- a/api/system-lint-baseline.txt
+++ /dev/null
@@ -1,533 +0,0 @@
-// Baseline format: 1.0
-AcronymName: android.net.NetworkCapabilities#setSSID(String):
-    
-
-
-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.net.wifi.WifiManager#ACTION_LINK_CONFIGURATION_CHANGED:
-    
-
-
-ArrayReturn: android.bluetooth.BluetoothCodecStatus#BluetoothCodecStatus(android.bluetooth.BluetoothCodecConfig, android.bluetooth.BluetoothCodecConfig[], android.bluetooth.BluetoothCodecConfig[]) parameter #1:
-    
-ArrayReturn: android.bluetooth.BluetoothCodecStatus#BluetoothCodecStatus(android.bluetooth.BluetoothCodecConfig, android.bluetooth.BluetoothCodecConfig[], android.bluetooth.BluetoothCodecConfig[]) parameter #2:
-    
-ArrayReturn: android.bluetooth.BluetoothCodecStatus#getCodecsLocalCapabilities():
-    
-ArrayReturn: android.bluetooth.BluetoothCodecStatus#getCodecsSelectableCapabilities():
-    
-ArrayReturn: android.bluetooth.BluetoothUuid#containsAnyUuid(android.os.ParcelUuid[], android.os.ParcelUuid[]) parameter #0:
-    
-ArrayReturn: android.bluetooth.BluetoothUuid#containsAnyUuid(android.os.ParcelUuid[], android.os.ParcelUuid[]) parameter #1:
-    
-ArrayReturn: android.media.tv.tuner.Tuner.FilterCallback#onFilterEvent(android.media.tv.tuner.Tuner.Filter, android.media.tv.tuner.filter.FilterEvent[]) parameter #1:
-    
-ArrayReturn: android.net.NetworkScoreManager#requestScores(android.net.NetworkKey[]) parameter #0:
-    
-ArrayReturn: android.view.contentcapture.ViewNode#getAutofillOptions():
-    
-
-
-BuilderSetStyle: android.net.IpSecTransform.Builder#buildTunnelModeTransform(java.net.InetAddress, android.net.IpSecManager.SecurityParameterIndex):
-    Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.net.IpSecTransform.Builder.buildTunnelModeTransform(java.net.InetAddress,android.net.IpSecManager.SecurityParameterIndex)
-
-
-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):
-    
-
-
-KotlinKeyword: android.app.Notification#when:
-    
-
-
-KotlinOperator: android.telephony.CbGeoUtils.Geometry#contains(android.telephony.CbGeoUtils.LatLng):
-    
-
-
-MissingGetterMatchingBuilder: android.net.wifi.rtt.RangingRequest.Builder#addResponder(android.net.wifi.rtt.ResponderConfig):
-    android.net.wifi.rtt.RangingRequest does not declare a `getResponders()` method matching method android.net.wifi.rtt.RangingRequest.Builder.addResponder(android.net.wifi.rtt.ResponderConfig)
-MissingGetterMatchingBuilder: android.security.keystore.KeyGenParameterSpec.Builder#setUid(int):
-    android.security.keystore.KeyGenParameterSpec does not declare a `getUid()` method matching method android.security.keystore.KeyGenParameterSpec.Builder.setUid(int)
-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.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.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.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:
-    
-NoSettingsProvider: android.provider.Settings.Global#TETHER_SUPPORTED:
-    
-
-
-NotCloseable: android.bluetooth.BluetoothA2dpSink:
-    
-NotCloseable: android.bluetooth.BluetoothMap:
-    
-NotCloseable: android.bluetooth.BluetoothPan:
-    
-NotCloseable: android.bluetooth.BluetoothPbap:
-    
-
-
-OnNameExpected: android.content.ContentProvider#checkUriPermission(android.net.Uri, int, int):
-    
-
-
-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):
-    
-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):
-    
-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):
-    
-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):
-    
-SamShouldBeLast: android.location.LocationManager#requestSingleUpdate(android.location.Criteria, android.location.LocationListener, android.os.Looper):
-    
-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.AudioTrack#addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler):
-    SAM-compatible parameters (such as parameter 1, "listener", in android.media.AudioTrack.addOnRoutingChangedListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions
-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):
-    
-
-
-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):
-    
diff --git a/api/system-removed.txt b/api/system-removed.txt
deleted file mode 100644
index 3acc225..0000000
--- a/api/system-removed.txt
+++ /dev/null
@@ -1,198 +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 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/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index 5bcf307..2c7ee21 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -582,6 +582,7 @@
         result = movie();
     }
 
+    mCallbacks->shutdown();
     eglMakeCurrent(mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
     eglDestroyContext(mDisplay, mContext);
     eglDestroySurface(mDisplay, mSurface);
@@ -668,7 +669,6 @@
     int exitnow = atoi(value);
     if (exitnow) {
         requestExit();
-        mCallbacks->shutdown();
     }
 }
 
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/OWNERS b/cmds/statsd/OWNERS
index a61babf..4e4e119 100644
--- a/cmds/statsd/OWNERS
+++ b/cmds/statsd/OWNERS
@@ -1,9 +1 @@
-jeffreyhuang@google.com
-joeo@google.com
-jtnguyen@google.com
-muhammadq@google.com
-ruchirr@google.com
-singhtejinder@google.com
-tsaichristine@google.com
-yaochen@google.com
-yro@google.com
+baligh@google.com
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/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/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/current.txt b/core/api/current.txt
index ab0aec7..b579d2c 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -96,6 +96,7 @@
     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";
@@ -9050,6 +9051,15 @@
     field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHidDeviceAppSdpSettings> CREATOR;
   }
 
+  public final class BluetoothLeAudio 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 public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) 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_LE_AUDIO_CONNECTION_STATE_CHANGED = "android.bluetooth.action.LE_AUDIO_CONNECTION_STATE_CHANGED";
+  }
+
   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);
@@ -30272,6 +30282,7 @@
     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();
@@ -30279,6 +30290,7 @@
     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);
@@ -37208,6 +37220,9 @@
     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
@@ -37253,6 +37268,8 @@
     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";
@@ -37269,6 +37286,13 @@
     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";
@@ -40897,6 +40921,12 @@
 
 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);
@@ -40976,10 +41006,11 @@
     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 public boolean isInsideSecureHardware();
+    method @Deprecated public boolean isInsideSecureHardware();
     method public boolean isInvalidatedByBiometricEnrollment();
     method public boolean isTrustedUserPresenceRequired();
     method public boolean isUserAuthenticationRequired();
@@ -41036,6 +41067,11 @@
     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";
   }
@@ -44000,6 +44036,8 @@
     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";
@@ -44446,6 +44484,7 @@
     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);
@@ -44845,6 +44884,7 @@
     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";
@@ -45039,6 +45079,10 @@
     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 {
@@ -45056,6 +45100,7 @@
   }
 
   public static final class CarrierConfigManager.Ims {
+    field public static final String KEY_ENABLE_PRESENCE_PUBLISH_BOOL = "ims.enable_presence_publish_bool";
     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";
@@ -46062,6 +46107,7 @@
   }
 
   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();
@@ -46180,6 +46226,8 @@
     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
@@ -46198,6 +46246,7 @@
     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
@@ -46567,6 +46616,9 @@
     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";
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt
index 198134e..ee8abf1 100644
--- a/core/api/module-lib-current.txt
+++ b/core/api/module-lib-current.txt
@@ -1,4 +1,13 @@
 // 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 {
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 8b1e65f..44917df 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -369,6 +369,7 @@
     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";
@@ -392,6 +393,7 @@
     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";
@@ -5984,6 +5986,7 @@
     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_PROXY = 16; // 0x10
     field @Deprecated public static final int TYPE_WIFI_P2P = 13; // 0xd
   }
 
@@ -6173,6 +6176,7 @@
     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
@@ -8257,8 +8261,13 @@
     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 setUid(int);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setNamespace(int);
+    method @Deprecated @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUid(int);
   }
 
 }
@@ -9467,6 +9476,17 @@
     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();
@@ -9727,6 +9747,18 @@
     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();
@@ -10070,6 +10102,7 @@
 
   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);
@@ -10083,17 +10116,21 @@
     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();
@@ -10117,6 +10154,7 @@
     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 @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<android.telephony.RadioAccessSpecifier> getSystemSelectionChannels();
     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();
@@ -10137,6 +10175,7 @@
     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);
@@ -10164,11 +10203,15 @@
     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);
@@ -10181,10 +10224,12 @@
     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 @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPinReportResult(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 @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int[] supplyPukReportResult(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);
@@ -10208,6 +10253,14 @@
     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";
@@ -10240,6 +10293,9 @@
     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
@@ -10342,8 +10398,10 @@
     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 int getSuggestedRetryTime();
+    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
@@ -10355,6 +10413,8 @@
     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 {
@@ -10372,8 +10432,10 @@
     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 setSuggestedRetryTime(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 {
@@ -10435,6 +10497,7 @@
 
   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();
@@ -10443,11 +10506,15 @@
     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);
@@ -10628,6 +10695,61 @@
     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();
@@ -10657,6 +10779,7 @@
     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);
@@ -10681,6 +10804,7 @@
     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);
@@ -10750,6 +10874,7 @@
     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);
@@ -10770,6 +10895,7 @@
     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);
@@ -11126,8 +11252,125 @@
     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;
   }
 
 }
@@ -11179,6 +11422,7 @@
   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();
@@ -11220,6 +11464,19 @@
 
 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);
@@ -11242,6 +11499,7 @@
     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);
@@ -11379,8 +11637,17 @@
     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);
   }
 
 }
diff --git a/api/test-current.txt b/core/api/test-current.txt
similarity index 99%
rename from api/test-current.txt
rename to core/api/test-current.txt
index 9c51729..fc27d06 100644
--- a/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -192,6 +192,7 @@
     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
@@ -1672,6 +1673,7 @@
     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();
diff --git a/api/test-lint-baseline.txt b/core/api/test-lint-baseline.txt
similarity index 100%
rename from api/test-lint-baseline.txt
rename to core/api/test-lint-baseline.txt
diff --git a/api/test-removed.txt b/core/api/test-removed.txt
similarity index 100%
rename from api/test-removed.txt
rename 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 795ebc7..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;
@@ -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);
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 0d5bb11..c4f13fe 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -778,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
@@ -846,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 */
@@ -1133,8 +1135,8 @@
     public static final int OP_RESERVED_102 = 102;
 
     /** @hide */
-    @UnsupportedAppUsage
-    public static final int _NUM_OP = 103;
+    @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";
@@ -1439,12 +1441,22 @@
     @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
@@ -1550,6 +1562,7 @@
             OP_MANAGE_EXTERNAL_STORAGE,
             OP_INTERACT_ACROSS_PROFILES,
             OP_LOADER_USAGE_STATS,
+            OP_MANAGE_ONGOING_CALLS,
     };
 
     /**
@@ -1664,6 +1677,7 @@
             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
     };
 
     /**
@@ -1773,6 +1787,7 @@
             OPSTR_RESERVED_100,
             OPSTR_RESERVED_101,
             OPSTR_RESERVED_102,
+            OPSTR_MANAGE_ONGOING_CALLS,
     };
 
     /**
@@ -1883,6 +1898,7 @@
             "RESERVED_100",
             "RESERVED_101",
             "RESERVED_102",
+            "MANAGE_ONGOING_CALLS",
     };
 
     /**
@@ -1994,6 +2010,7 @@
             null, // OP_RESERVED_100
             null, // OP_RESERVED_101
             null, // OP_RESERVED_102
+            Manifest.permission.MANAGE_ONGOING_CALLS,
     };
 
     /**
@@ -2105,6 +2122,7 @@
             null, // OP_RESERVED_100
             null, // OP_RESERVED_101
             null, // OP_RESERVED_102
+            null, // MANAGE_ONGOING_CALLS
     };
 
     /**
@@ -2215,6 +2233,7 @@
             null, // OP_RESERVED_100
             null, // OP_RESERVED_101
             null, // OP_RESERVED_102
+            null, // MANAGE_ONGOING_CALLS
     };
 
     /**
@@ -2324,6 +2343,7 @@
             AppOpsManager.MODE_ERRORED, // OP_RESERVED_100
             AppOpsManager.MODE_ERRORED, // OP_RESERVED_101
             AppOpsManager.MODE_ERRORED, // OP_RESERVED_102
+            AppOpsManager.MODE_DEFAULT, // MANAGE_ONGOING_CALLS
     };
 
     /**
@@ -2437,6 +2457,7 @@
             false, // OP_RESERVED_100
             false, // OP_RESERVED_101
             false, // OP_RESERVED_102
+            true, // MANAGE_ONGOING_CALLS
     };
 
     /**
@@ -2548,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 + ")");
@@ -2579,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];
@@ -6792,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);
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 904c473..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 2ef147b..5a30e29 100644
--- a/core/java/android/app/Instrumentation.java
+++ b/core/java/android/app/Instrumentation.java
@@ -1415,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 {
@@ -1761,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) {
@@ -1944,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,
@@ -1992,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) {
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/NotificationManager.java b/core/java/android/app/NotificationManager.java
index a64433f..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 {
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/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 1a07cc6..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();
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/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/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 b1c005c..95f1240 100644
--- a/core/java/android/app/WallpaperManager.java
+++ b/core/java/android/app/WallpaperManager.java
@@ -1976,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 05bf949..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";
 
@@ -4122,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 {
@@ -4204,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) {
@@ -4506,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");
@@ -6319,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) {
@@ -6680,7 +6680,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public boolean isDeviceManaged() {
         try {
             return mService.hasDeviceOwner();
@@ -7033,7 +7033,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public @Nullable ComponentName getProfileOwnerAsUser(final int userId) {
         if (mService != null) {
             try {
@@ -7448,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) {
@@ -10392,7 +10392,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public @Nullable CharSequence getDeviceOwnerOrganizationName() {
         try {
             return mService.getDeviceOwnerOrganizationName();
@@ -10637,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/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/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/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 7e7710b..0f88811 100644
--- a/core/java/android/app/backup/OWNERS
+++ b/core/java/android/app/backup/OWNERS
@@ -1,4 +1,4 @@
 # Bug component: 656484
 
-include platform/frameworks/base/services/backup:/OWNERS
+include platform/frameworks/base:/services/backup/OWNERS
 
diff --git a/core/java/android/app/servertransaction/ActivityResultItem.java b/core/java/android/app/servertransaction/ActivityResultItem.java
index 4e743cac..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 7047f73..2dfbb3a 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -41,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;
@@ -1173,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 {
@@ -1222,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 {
@@ -2594,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);
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 6d22eb9..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;
@@ -881,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/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/BluetoothLeAudio.java b/core/java/android/bluetooth/BluetoothLeAudio.java
new file mode 100644
index 0000000..3f00fa6
--- /dev/null
+++ b/core/java/android/bluetooth/BluetoothLeAudio.java
@@ -0,0 +1,451 @@
+/*
+ * Copyright 2020 HIMSA II K/S - www.himsa.com.
+ * Represented by EHIMA - www.ehima.com
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.bluetooth;
+
+import android.Manifest;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
+import android.annotation.SdkConstant;
+import android.annotation.SdkConstant.SdkConstantType;
+import android.content.Context;
+import android.os.Binder;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.util.CloseGuard;
+import android.util.Log;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This class provides the public APIs to control the LeAudio profile.
+ *
+ * <p>BluetoothLeAudio is a proxy object for controlling the Bluetooth LE Audio
+ * Service via IPC. Use {@link BluetoothAdapter#getProfileProxy} to get
+ * the BluetoothLeAudio proxy object.
+ *
+ * <p> Android only supports one set of connected Bluetooth LeAudio device at a time. Each
+ * method is protected with its appropriate permission.
+ */
+public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable {
+    private static final String TAG = "BluetoothLeAudio";
+    private static final boolean DBG = false;
+    private static final boolean VDBG = false;
+
+    private CloseGuard mCloseGuard;
+
+    /**
+     * Intent used to broadcast the change in connection state of the LeAudio
+     * profile. Please note that in the binaural case, there will be two different LE devices for
+     * the left and right side and each device will have their own connection state changes.
+     *
+     * <p>This intent will have 3 extras:
+     * <ul>
+     * <li> {@link #EXTRA_STATE} - The current state of the profile. </li>
+     * <li> {@link #EXTRA_PREVIOUS_STATE}- The previous state of the profile.</li>
+     * <li> {@link BluetoothDevice#EXTRA_DEVICE} - The remote device. </li>
+     * </ul>
+     *
+     * <p>{@link #EXTRA_STATE} or {@link #EXTRA_PREVIOUS_STATE} can be any of
+     * {@link #STATE_DISCONNECTED}, {@link #STATE_CONNECTING},
+     * {@link #STATE_CONNECTED}, {@link #STATE_DISCONNECTING}.
+     *
+     * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission to
+     * receive.
+     */
+    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+    public static final String ACTION_LE_AUDIO_CONNECTION_STATE_CHANGED =
+            "android.bluetooth.action.LE_AUDIO_CONNECTION_STATE_CHANGED";
+
+    /**
+     * Intent used to broadcast the selection of a connected device as active.
+     *
+     * <p>This intent will have one extra:
+     * <ul>
+     * <li> {@link BluetoothDevice#EXTRA_DEVICE} - The remote device. It can
+     * be null if no device is active. </li>
+     * </ul>
+     *
+     * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission to
+     * receive.
+     *
+     * @hide
+     */
+    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+    public static final String ACTION_LE_AUDIO_ACTIVE_DEVICE_CHANGED =
+            "android.bluetooth.action.LE_AUDIO_ACTIVE_DEVICE_CHANGED";
+
+    /**
+     * This represents an invalid group ID.
+     *
+     * @hide
+     */
+    public static final int GROUP_ID_INVALID = IBluetoothLeAudio.LE_AUDIO_GROUP_ID_INVALID;
+
+    private BluetoothAdapter mAdapter;
+    private final BluetoothProfileConnector<IBluetoothLeAudio> mProfileConnector =
+            new BluetoothProfileConnector(this, BluetoothProfile.LE_AUDIO, "BluetoothLeAudio",
+                    IBluetoothLeAudio.class.getName()) {
+                @Override
+                public IBluetoothLeAudio getServiceInterface(IBinder service) {
+                    return IBluetoothLeAudio.Stub.asInterface(Binder.allowBlocking(service));
+                }
+    };
+
+    /**
+     * Create a BluetoothLeAudio proxy object for interacting with the local
+     * Bluetooth LeAudio service.
+     */
+    /*package*/ BluetoothLeAudio(Context context, ServiceListener listener) {
+        mAdapter = BluetoothAdapter.getDefaultAdapter();
+        mProfileConnector.connect(context, listener);
+        mCloseGuard = new CloseGuard();
+        mCloseGuard.open("close");
+    }
+
+    /**
+     * @hide
+     */
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
+    public void close() {
+        mProfileConnector.disconnect();
+    }
+
+    private IBluetoothLeAudio getService() {
+        return mProfileConnector.getService();
+    }
+
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
+    protected void finalize() {
+        if (mCloseGuard != null) {
+            mCloseGuard.warnIfOpen();
+        }
+        close();
+    }
+
+    /**
+     * Initiate connection to a profile of the remote bluetooth device.
+     *
+     * <p> This API returns false in scenarios like the profile on the
+     * device is already connected or Bluetooth is not turned on.
+     * When this API returns true, it is guaranteed that
+     * connection state intent for the profile will be broadcasted with
+     * the state. Users can get the connection state of the profile
+     * from this intent.
+     *
+     *
+     * @param device Remote Bluetooth Device
+     * @return false on immediate error, true otherwise
+     * @hide
+     */
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
+    public boolean connect(@Nullable BluetoothDevice device) {
+        if (DBG) log("connect(" + device + ")");
+        try {
+            final IBluetoothLeAudio service = getService();
+            if (service != null && mAdapter.isEnabled() && isValidDevice(device)) {
+                return service.connect(device);
+            }
+            if (service == null) Log.w(TAG, "Proxy not attached to service");
+            return false;
+        } catch (RemoteException e) {
+            Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
+            return false;
+        }
+    }
+
+    /**
+     * Initiate disconnection from a profile
+     *
+     * <p> This API will return false in scenarios like the profile on the
+     * Bluetooth device is not in connected state etc. When this API returns,
+     * true, it is guaranteed that the connection state change
+     * intent will be broadcasted with the state. Users can get the
+     * disconnection state of the profile from this intent.
+     *
+     * <p> If the disconnection is initiated by a remote device, the state
+     * will transition from {@link #STATE_CONNECTED} to
+     * {@link #STATE_DISCONNECTED}. If the disconnect is initiated by the
+     * host (local) device the state will transition from
+     * {@link #STATE_CONNECTED} to state {@link #STATE_DISCONNECTING} to
+     * state {@link #STATE_DISCONNECTED}. The transition to
+     * {@link #STATE_DISCONNECTING} can be used to distinguish between the
+     * two scenarios.
+     *
+     *
+     * @param device Remote Bluetooth Device
+     * @return false on immediate error, true otherwise
+     * @hide
+     */
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
+    public boolean disconnect(@Nullable BluetoothDevice device) {
+        if (DBG) log("disconnect(" + device + ")");
+        try {
+            final IBluetoothLeAudio service = getService();
+            if (service != null && mAdapter.isEnabled() && isValidDevice(device)) {
+                return service.disconnect(device);
+            }
+            if (service == null) Log.w(TAG, "Proxy not attached to service");
+            return false;
+        } catch (RemoteException e) {
+            Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
+            return false;
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public @NonNull List<BluetoothDevice> getConnectedDevices() {
+        if (VDBG) log("getConnectedDevices()");
+        try {
+            final IBluetoothLeAudio service = getService();
+            if (service != null && mAdapter.isEnabled()) {
+                return service.getConnectedDevices();
+            }
+            if (service == null) Log.w(TAG, "Proxy not attached to service");
+            return new ArrayList<BluetoothDevice>();
+        } catch (RemoteException e) {
+            Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
+            return new ArrayList<BluetoothDevice>();
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public @NonNull List<BluetoothDevice> getDevicesMatchingConnectionStates(
+            @NonNull int[] states) {
+        if (VDBG) log("getDevicesMatchingStates()");
+        try {
+            final IBluetoothLeAudio service = getService();
+            if (service != null && mAdapter.isEnabled()) {
+                return service.getDevicesMatchingConnectionStates(states);
+            }
+            if (service == null) Log.w(TAG, "Proxy not attached to service");
+            return new ArrayList<BluetoothDevice>();
+        } catch (RemoteException e) {
+            Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
+            return new ArrayList<BluetoothDevice>();
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    @RequiresPermission(Manifest.permission.BLUETOOTH)
+    public @BtProfileState int getConnectionState(@NonNull BluetoothDevice device) {
+        if (VDBG) log("getState(" + device + ")");
+        try {
+            final IBluetoothLeAudio service = getService();
+            if (service != null && mAdapter.isEnabled()
+                    && isValidDevice(device)) {
+                return service.getConnectionState(device);
+            }
+            if (service == null) Log.w(TAG, "Proxy not attached to service");
+            return BluetoothProfile.STATE_DISCONNECTED;
+        } catch (RemoteException e) {
+            Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
+            return BluetoothProfile.STATE_DISCONNECTED;
+        }
+    }
+
+    /**
+     * Select a connected device as active.
+     *
+     * The active device selection is per profile. An active device's
+     * purpose is profile-specific. For example, LeAudio audio
+     * streaming is to the active LeAudio device. If a remote device
+     * is not connected, it cannot be selected as active.
+     *
+     * <p> This API returns false in scenarios like the profile on the
+     * device is not connected or Bluetooth is not turned on.
+     * When this API returns true, it is guaranteed that the
+     * {@link #ACTION_LEAUDIO_ACTIVE_DEVICE_CHANGED} intent will be broadcasted
+     * with the active device.
+     *
+     *
+     * @param device the remote Bluetooth device. Could be null to clear
+     * the active device and stop streaming audio to a Bluetooth device.
+     * @return false on immediate error, true otherwise
+     * @hide
+     */
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
+    public boolean setActiveDevice(@Nullable BluetoothDevice device) {
+        if (DBG) log("setActiveDevice(" + device + ")");
+        try {
+            final IBluetoothLeAudio service = getService();
+            if (service != null && mAdapter.isEnabled()
+                    && ((device == null) || isValidDevice(device))) {
+                service.setActiveDevice(device);
+                return true;
+            }
+            if (service == null) Log.w(TAG, "Proxy not attached to service");
+            return false;
+        } catch (RemoteException e) {
+            Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
+            return false;
+        }
+    }
+
+    /**
+     * Get the connected LeAudio devices that are active
+     *
+     * @return the list of active devices. Returns empty list on error.
+     * @hide
+     */
+    @NonNull
+    @RequiresPermission(Manifest.permission.BLUETOOTH)
+    public List<BluetoothDevice> getActiveDevices() {
+        if (VDBG) log("getActiveDevices()");
+        try {
+            final IBluetoothLeAudio service = getService();
+            if (service != null && mAdapter.isEnabled()) {
+                return service.getActiveDevices();
+            }
+            if (service == null) Log.w(TAG, "Proxy not attached to service");
+            return new ArrayList<>();
+        } catch (RemoteException e) {
+            Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
+            return new ArrayList<>();
+        }
+    }
+
+    /**
+     * Get device group id. Devices with same group id belong to same group (i.e left and right
+     * earbud)
+     * @param device LE Audio capable device
+     * @return group id that this device currently belongs to
+     * @hide
+     */
+    @RequiresPermission(Manifest.permission.BLUETOOTH)
+    public int getGroupId(@NonNull BluetoothDevice device) {
+        if (VDBG) log("getGroupId()");
+        try {
+            final IBluetoothLeAudio service = getService();
+            if (service != null && mAdapter.isEnabled()) {
+                return service.getGroupId(device);
+            }
+            if (service == null) Log.w(TAG, "Proxy not attached to service");
+            return GROUP_ID_INVALID;
+        } catch (RemoteException e) {
+            Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
+            return GROUP_ID_INVALID;
+        }
+    }
+
+    /**
+     * Set connection policy of the profile
+     *
+     * <p> The device should already be paired.
+     * Connection policy can be one of {@link #CONNECTION_POLICY_ALLOWED},
+     * {@link #CONNECTION_POLICY_FORBIDDEN}, {@link #CONNECTION_POLICY_UNKNOWN}
+     *
+     * @param device Paired bluetooth device
+     * @param connectionPolicy is the connection policy to set to for this profile
+     * @return true if connectionPolicy is set, false on error
+     * @hide
+     */
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
+    public boolean setConnectionPolicy(@NonNull BluetoothDevice device,
+            @ConnectionPolicy int connectionPolicy) {
+        if (DBG) log("setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
+        try {
+            final IBluetoothLeAudio service = getService();
+            if (service != null && mAdapter.isEnabled()
+                    && isValidDevice(device)) {
+                if (connectionPolicy != BluetoothProfile.CONNECTION_POLICY_FORBIDDEN
+                        && connectionPolicy != BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
+                    return false;
+                }
+                return service.setConnectionPolicy(device, connectionPolicy);
+            }
+            if (service == null) Log.w(TAG, "Proxy not attached to service");
+            return false;
+        } catch (RemoteException e) {
+            Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
+            return false;
+        }
+    }
+
+    /**
+     * Get the connection policy of the profile.
+     *
+     * <p> The connection policy can be any of:
+     * {@link #CONNECTION_POLICY_ALLOWED}, {@link #CONNECTION_POLICY_FORBIDDEN},
+     * {@link #CONNECTION_POLICY_UNKNOWN}
+     *
+     * @param device Bluetooth device
+     * @return connection policy of the device
+     * @hide
+     */
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
+    public @ConnectionPolicy int getConnectionPolicy(@Nullable BluetoothDevice device) {
+        if (VDBG) log("getConnectionPolicy(" + device + ")");
+        try {
+            final IBluetoothLeAudio service = getService();
+            if (service != null && mAdapter.isEnabled()
+                    && isValidDevice(device)) {
+                return service.getConnectionPolicy(device);
+            }
+            if (service == null) Log.w(TAG, "Proxy not attached to service");
+            return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
+        } catch (RemoteException e) {
+            Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
+            return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
+        }
+    }
+
+
+    /**
+     * Helper for converting a state to a string.
+     *
+     * For debug use only - strings are not internationalized.
+     *
+     * @hide
+     */
+    public static String stateToString(int state) {
+        switch (state) {
+            case STATE_DISCONNECTED:
+                return "disconnected";
+            case STATE_CONNECTING:
+                return "connecting";
+            case STATE_CONNECTED:
+                return "connected";
+            case STATE_DISCONNECTING:
+                return "disconnecting";
+            default:
+                return "<unknown state " + state + ">";
+        }
+    }
+
+    private boolean isValidDevice(@Nullable BluetoothDevice device) {
+        if (device == null) return false;
+
+        if (BluetoothAdapter.checkBluetoothAddress(device.getAddress())) return true;
+        return false;
+    }
+
+    private static void log(String msg) {
+        Log.d(TAG, msg);
+    }
+}
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..c31b04e 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;
@@ -206,12 +207,19 @@
     int HEARING_AID = 21;
 
     /**
+     * LE Audio Device
+     *
+     * @hide
+     */
+    int LE_AUDIO = 22;
+
+    /**
      * Max profile ID. This value should be updated whenever a new profile is added to match
      * the largest value assigned to a profile.
      *
      * @hide
      */
-    int MAX_PROFILE_ID = 21;
+    int MAX_PROFILE_ID = 22;
 
     /**
      * Default priority for devices that we try to auto-connect to and
@@ -219,7 +227,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/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 cf9eeca..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;
     }
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/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/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/ContentResolver.java b/core/java/android/content/ContentResolver.java
index 2d0c7e4..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 {
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 392dd64..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();
@@ -1916,7 +1921,7 @@
      * {@link #startActivityForResult(String, Intent, int, Bundle)}.
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean canStartActivityForResult() {
         return false;
     }
@@ -2173,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);
 
@@ -2203,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,
@@ -2213,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);
@@ -2328,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,
@@ -2340,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,
@@ -2393,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,
@@ -2415,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);
 
@@ -2461,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,
@@ -2474,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,
@@ -2688,6 +2702,7 @@
      * @hide
      * This is just here for sending CONNECTIVITY_ACTION.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Deprecated
     @RequiresPermission(allOf = {
             android.Manifest.permission.INTERACT_ACROSS_USERS,
@@ -2978,6 +2993,7 @@
      * @see #sendBroadcast
      * @see #unregisterReceiver
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
     @UnsupportedAppUsage
@@ -3088,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);
@@ -3126,6 +3143,7 @@
     /**
      * @hide like {@link #startService(Intent)} but for a specific user.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
     @UnsupportedAppUsage
@@ -3134,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);
 
@@ -5190,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);
 
@@ -5417,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);
@@ -5701,6 +5722,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract Context createApplicationContext(ApplicationInfo application,
             @CreatePackageOptions int flags) throws PackageManager.NameNotFoundException;
@@ -5920,6 +5942,7 @@
      * @see #isCredentialProtectedStorage()
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract Context createCredentialProtectedStorageContext();
 
@@ -5932,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);
 
     /**
@@ -5966,12 +5990,14 @@
      * @see #getDisplay()
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @TestApi
     public abstract int getDisplayId();
 
     /**
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract void updateDisplay(int displayId);
 
     /**
@@ -6000,6 +6026,7 @@
      * @see #createCredentialProtectedStorageContext()
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract boolean isCredentialProtectedStorage();
 
@@ -6007,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 fbc3cc2..6bfc12d 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -2337,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";
 
     /**
@@ -3675,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";
 
@@ -7382,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();
@@ -7773,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:",
@@ -8063,7 +8063,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setAllowFds(boolean allowFds) {
         if (mExtras != null) {
             mExtras.setAllowFds(allowFds);
@@ -10410,7 +10410,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public String toInsecureString() {
         StringBuilder b = new StringBuilder(128);
 
@@ -11093,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/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 2138f53..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);
 
     //------------------------------------------------------------------------
diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java
index 6a553cf..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;
@@ -2109,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)
@@ -2188,7 +2188,7 @@
         public int rollbackDataPolicy;
 
         /** {@hide} */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public SessionInfo() {
         }
 
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index fbda3ff..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;
@@ -1768,7 +1768,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int MOVE_INTERNAL = 0x00000001;
 
     /**
@@ -1777,7 +1777,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static final int MOVE_EXTERNAL_MEDIA = 0x00000002;
 
     /** {@hide} */
@@ -3589,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";
 
@@ -3602,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";
 
@@ -3682,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} */
@@ -3796,6 +3796,7 @@
      *             found on the system.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS)
     @UnsupportedAppUsage
     public abstract PackageInfo getPackageInfoAsUser(@NonNull String packageName,
@@ -3862,6 +3863,7 @@
      *         does not contain such an activity.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract @Nullable Intent getCarLaunchIntentForPackage(@NonNull String packageName);
 
     /**
@@ -3927,6 +3929,7 @@
      *             found on the system.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract int getPackageUidAsUser(@NonNull String packageName, @UserIdInt int userId)
             throws NameNotFoundException;
@@ -3945,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;
@@ -3987,6 +3991,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract boolean arePermissionsIndividuallyControlled();
 
@@ -3995,6 +4000,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract boolean isWirelessConsentModeEnabled();
 
     /**
@@ -4047,6 +4053,7 @@
             @ApplicationInfoFlags int flags) throws NameNotFoundException;
 
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract ApplicationInfo getApplicationInfoAsUser(@NonNull String packageName,
@@ -4228,6 +4235,7 @@
      *         deleted with {@code DELETE_KEEP_DATA} flag set).
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @SystemApi
     @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
@@ -4276,6 +4284,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     @NonNull
     @TestApi
@@ -4389,6 +4398,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS)
     public abstract void grantRuntimePermission(@NonNull String packageName,
@@ -4415,6 +4425,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(android.Manifest.permission.REVOKE_RUNTIME_PERMISSIONS)
     public abstract void revokeRuntimePermission(@NonNull String packageName,
@@ -4459,6 +4470,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(anyOf = {
             android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS,
@@ -4481,6 +4493,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(anyOf = {
             android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS,
@@ -4704,6 +4717,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean shouldShowRequestPermissionRationale(@NonNull String permName);
 
@@ -4819,6 +4833,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @TestApi
     public abstract @Nullable String[] getNamesForUids(int[] uids);
 
@@ -4835,6 +4850,7 @@
      *             found on the system.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract int getUidForSharedUser(@NonNull String sharedUserName)
             throws NameNotFoundException;
@@ -4878,6 +4894,7 @@
      *         deleted with {@code DELETE_KEEP_DATA} flag set).
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @TestApi
     public abstract List<ApplicationInfo> getInstalledApplicationsAsUser(
@@ -4890,6 +4907,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(Manifest.permission.ACCESS_INSTANT_APPS)
     public abstract @NonNull List<InstantAppInfo> getInstantApps();
@@ -4901,6 +4919,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(Manifest.permission.ACCESS_INSTANT_APPS)
     public abstract @Nullable Drawable getInstantAppIcon(String packageName);
@@ -4949,6 +4968,7 @@
      * deprecated
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract int getInstantAppCookieMaxSize();
 
     /**
@@ -5006,6 +5026,7 @@
     /**
      * @removed
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract boolean setInstantAppCookie(@Nullable byte[] cookie);
 
     /**
@@ -5044,6 +5065,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract @NonNull List<SharedLibraryInfo> getSharedLibrariesAsUser(
             @InstallFlags int flags, @UserIdInt int userId);
 
@@ -5056,6 +5078,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @RequiresPermission(Manifest.permission.ACCESS_SHARED_LIBRARIES)
     @SystemApi
@@ -5075,6 +5098,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     @TestApi
     public abstract @NonNull String getServicesSystemSharedLibraryPackageName();
@@ -5086,6 +5110,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     @TestApi
     public abstract @NonNull String getSharedSystemSharedLibraryPackageName();
@@ -5192,6 +5217,7 @@
      *         containing something else, such as the activity resolver.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @UnsupportedAppUsage
     public abstract ResolveInfo resolveActivityAsUser(@NonNull Intent intent,
@@ -5233,6 +5259,7 @@
      *         empty list is returned.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract List<ResolveInfo> queryIntentActivitiesAsUser(@NonNull Intent intent,
@@ -5256,6 +5283,7 @@
      *         empty list is returned.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS)
     @SystemApi
@@ -5318,6 +5346,7 @@
      *         no matching receivers, an empty list or null is returned.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @SystemApi
     @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS)
@@ -5329,6 +5358,7 @@
     /**
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract List<ResolveInfo> queryBroadcastReceiversAsUser(@NonNull Intent intent,
@@ -5367,6 +5397,7 @@
     /**
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     public abstract ResolveInfo resolveServiceAsUser(@NonNull Intent intent,
             @ResolveInfoFlags int flags, @UserIdInt int userId);
@@ -5399,6 +5430,7 @@
      *         empty list or null is returned.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract List<ResolveInfo> queryIntentServicesAsUser(@NonNull Intent intent,
@@ -5437,6 +5469,7 @@
      *         no matching services, an empty list or null is returned.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract List<ResolveInfo> queryIntentContentProvidersAsUser(
@@ -5504,6 +5537,7 @@
      *         provider. If a provider was not found, returns null.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @UnsupportedAppUsage
     public abstract ProviderInfo resolveContentProviderAsUser(@NonNull String providerName,
@@ -5888,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);
@@ -5906,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,
@@ -6030,6 +6066,7 @@
             throws NameNotFoundException;
 
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract Resources getResourcesForApplicationAsUser(@NonNull String packageName,
@@ -6075,6 +6112,7 @@
      *
      * @deprecated use {@link PackageInstaller#installExistingPackage()} instead.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Deprecated
     @SystemApi
     public abstract int installExistingPackage(@NonNull String packageName)
@@ -6087,6 +6125,7 @@
      *
      * @deprecated use {@link PackageInstaller#installExistingPackage()} instead.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Deprecated
     @SystemApi
     public abstract int installExistingPackage(@NonNull String packageName,
@@ -6099,6 +6138,7 @@
      *
      * @deprecated use {@link PackageInstaller#installExistingPackage()} instead.
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Deprecated
     @RequiresPermission(anyOf = {
             Manifest.permission.INSTALL_EXISTING_PACKAGES,
@@ -6179,6 +6219,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(android.Manifest.permission.INTENT_FILTER_VERIFICATION_AGENT)
     public abstract void verifyIntentFilter(int verificationId, int verificationCode,
@@ -6204,6 +6245,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL)
     public abstract int getIntentVerificationStatusAsUser(@NonNull String packageName,
@@ -6229,6 +6271,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(android.Manifest.permission.SET_PREFERRED_APPLICATIONS)
     public abstract boolean updateIntentVerificationStatusAsUser(@NonNull String packageName,
@@ -6246,6 +6289,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @SystemApi
     public abstract List<IntentFilterVerificationInfo> getIntentFilterVerifications(
@@ -6262,6 +6306,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @SystemApi
     public abstract List<IntentFilter> getAllIntentFilters(@NonNull String packageName);
@@ -6276,6 +6321,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @SystemApi
     @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL)
@@ -6293,6 +6339,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(allOf = {
             Manifest.permission.SET_PREFERRED_APPLICATIONS,
@@ -6319,6 +6366,7 @@
             @Nullable String installerPackageName);
 
     /** @hide */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(Manifest.permission.INSTALL_PACKAGES)
     public abstract void setUpdateAvailable(@NonNull String packageName, boolean updateAvaialble);
@@ -6339,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,
@@ -6359,6 +6408,7 @@
      * @param userId The user Id
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @RequiresPermission(anyOf = {
             Manifest.permission.DELETE_PACKAGES,
             Manifest.permission.INTERACT_ACROSS_USERS_FULL})
@@ -6376,6 +6426,7 @@
      *
      * @deprecated use {@link #getInstallSourceInfo(String)} instead
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Deprecated
     @Nullable
     public abstract String getInstallerPackageName(@NonNull String packageName);
@@ -6415,6 +6466,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void clearApplicationUserData(@NonNull String packageName,
             @Nullable IPackageDataObserver observer);
@@ -6434,6 +6486,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void deleteApplicationCacheFiles(@NonNull String packageName,
             @Nullable IPackageDataObserver observer);
@@ -6456,6 +6509,7 @@
      *            callback is desired.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void deleteApplicationCacheFilesAsUser(@NonNull String packageName,
             @UserIdInt int userId, @Nullable IPackageDataObserver observer);
@@ -6489,6 +6543,7 @@
     }
 
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void freeStorageAndNotify(@Nullable String volumeUuid, long freeStorageSize,
             @Nullable IPackageDataObserver observer);
@@ -6522,6 +6577,7 @@
     }
 
     /** {@hide} */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void freeStorage(@Nullable String volumeUuid, long freeStorageSize,
             @Nullable IntentSender pi);
@@ -6545,6 +6601,7 @@
      * @deprecated use {@link StorageStatsManager} instead.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Deprecated
     @UnsupportedAppUsage
     public abstract void getPackageSizeInfoAsUser(@NonNull String packageName,
@@ -6676,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,
@@ -6772,6 +6830,7 @@
      * default, if any.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @UnsupportedAppUsage
     public abstract ComponentName getHomeActivities(@NonNull List<ResolveInfo> outActivities);
@@ -6873,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);
 
@@ -6883,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);
@@ -6892,6 +6953,7 @@
      * @see #setApplicationHiddenSettingAsUser(String, boolean, UserHandle)
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean getApplicationHiddenSettingAsUser(@NonNull String packageName,
             @NonNull UserHandle userHandle);
@@ -6918,6 +6980,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(Manifest.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS)
     public abstract void addOnPermissionsChangeListener(
@@ -6930,6 +6993,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     @RequiresPermission(Manifest.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS)
     public abstract void removeOnPermissionsChangeListener(
@@ -6943,6 +7007,7 @@
      *        application's AndroidManifest.xml.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract KeySet getKeySetByAlias(@NonNull String packageName, @NonNull String alias);
@@ -6950,6 +7015,7 @@
     /** Return the signing {@link KeySet} for this application.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     @UnsupportedAppUsage
     public abstract KeySet getSigningKeySet(@NonNull String packageName);
@@ -6961,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);
 
@@ -6970,6 +7037,7 @@
      * {@link #isSignedBy(String packageName, KeySet ks)}.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean isSignedByExactly(@NonNull String packageName, @NonNull KeySet ks);
 
@@ -7187,6 +7255,7 @@
      * @throws IllegalArgumentException if the package was not found.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean isPackageSuspendedForUser(@NonNull String packageName, int userId);
 
@@ -7262,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);
 
@@ -7277,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();
 
     /**
@@ -7314,6 +7393,7 @@
      * @return identity that uniquely identifies current device
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @NonNull
     public abstract VerifierDeviceIdentity getVerifierDeviceIdentity();
 
@@ -7322,6 +7402,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean isUpgrade();
 
@@ -7351,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);
@@ -7362,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,
@@ -7376,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) {
@@ -7599,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);
@@ -7627,6 +7714,7 @@
      * @see {@link android.content.Intent#ACTION_INSTANT_APP_RESOLVER_SETTINGS}
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @SystemApi
     public abstract ComponentName getInstantAppResolverSettingsComponent();
@@ -7638,6 +7726,7 @@
      * @see {@link android.content.Intent#ACTION_INSTALL_INSTANT_APP_PACKAGE}
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @Nullable
     @SystemApi
     public abstract ComponentName getInstantAppInstallerComponent();
@@ -7648,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);
@@ -7692,6 +7782,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @SystemApi
     public abstract void registerDexModule(@NonNull String dexModulePath,
             @Nullable DexModuleRegisterCallback callback);
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index a30a652..f53ec8a 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -298,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;
 
@@ -1369,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();
@@ -6565,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;
@@ -6779,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 474279b..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;
@@ -443,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) {
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/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/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 0f3cdfc..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;
 
     /**
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/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/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/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java
index a2400fd..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";
 
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 4c96c54..f25b06b 100644
--- a/core/java/android/hardware/hdmi/HdmiControlManager.java
+++ b/core/java/android/hardware/hdmi/HdmiControlManager.java
@@ -407,7 +407,7 @@
      */
     @Nullable
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public HdmiClient getClient(int type) {
         if (mService == null) {
             return null;
@@ -440,7 +440,7 @@
      */
     @Nullable
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public HdmiPlaybackClient getPlaybackClient() {
         return (HdmiPlaybackClient) getClient(HdmiDeviceInfo.DEVICE_PLAYBACK);
     }
@@ -458,7 +458,7 @@
      */
     @Nullable
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public HdmiTvClient getTvClient() {
         return (HdmiTvClient) getClient(HdmiDeviceInfo.DEVICE_TV);
     }
@@ -476,7 +476,7 @@
      * @hide
      */
     @Nullable
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public HdmiAudioSystemClient getAudioSystemClient() {
         return (HdmiAudioSystemClient) getClient(HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM);
     }
@@ -491,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/HdmiDeviceInfo.java b/core/java/android/hardware/hdmi/HdmiDeviceInfo.java
index 55b0726..6b2bab4 100644
--- a/core/java/android/hardware/hdmi/HdmiDeviceInfo.java
+++ b/core/java/android/hardware/hdmi/HdmiDeviceInfo.java
@@ -513,4 +513,19 @@
                 && mDeviceId == other.mDeviceId
                 && mAdopterId == other.mAdopterId;
     }
+
+    @Override
+    public int hashCode() {
+        return java.util.Objects.hash(
+                mHdmiDeviceType,
+                mPhysicalAddress,
+                mPortId,
+                mLogicalAddress,
+                mDeviceType,
+                mVendorId,
+                mDevicePowerStatus,
+                mDisplayName,
+                mDeviceId,
+                mAdopterId);
+    }
 }
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 1afadd4..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;
@@ -1166,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) {
@@ -1372,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.
@@ -1381,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;
 
@@ -1552,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
@@ -1659,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,
@@ -1781,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,
@@ -1852,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..3d089b1 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/net/CaptivePortal.java b/core/java/android/net/CaptivePortal.java
index c2586fa..269bbf2 100644
--- a/core/java/android/net/CaptivePortal.java
+++ b/core/java/android/net/CaptivePortal.java
@@ -15,7 +15,6 @@
  */
 package android.net;
 
-import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
@@ -24,8 +23,6 @@
 import android.os.Parcelable;
 import android.os.RemoteException;
 
-import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-
 /**
  * A class allowing apps handling the {@link ConnectivityManager#ACTION_CAPTIVE_PORTAL_SIGN_IN}
  * activity to indicate to the system different outcomes of captive portal sign in.  This class is
@@ -75,17 +72,6 @@
     private final IBinder mBinder;
 
     /** @hide */
-    @IntDef(value = {
-        MetricsEvent.ACTION_CAPTIVE_PORTAL_LOGIN_ACTIVITY,
-        MetricsEvent.ACTION_CAPTIVE_PORTAL_LOGIN_RESULT_DISMISSED,
-        MetricsEvent.ACTION_CAPTIVE_PORTAL_LOGIN_RESULT_UNWANTED,
-        MetricsEvent.ACTION_CAPTIVE_PORTAL_LOGIN_RESULT_WANTED_AS_IS,
-        MetricsEvent.CAPTIVE_PORTAL_LOGIN_ACTIVITY_SSL_ERROR,
-    })
-    public @interface EventId {
-    }
-
-    /** @hide */
     public CaptivePortal(@NonNull IBinder binder) {
         mBinder = binder;
     }
@@ -176,7 +162,7 @@
      * @hide
      */
     @SystemApi
-    public void logEvent(@EventId int eventId, @NonNull String packageName) {
+    public void logEvent(int eventId, @NonNull String packageName) {
         try {
             ICaptivePortal.Stub.asInterface(mBinder).logEvent(eventId, packageName);
         } catch (RemoteException e) {
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index 8fd2995..cf5d4e5 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -354,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;
 
@@ -363,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;
 
     /**
@@ -378,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;
 
     /**
@@ -387,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;
 
     /**
@@ -684,7 +684,7 @@
      * {@hide}
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @SystemApi
     public static final int TYPE_PROXY = 16;
 
     /**
@@ -850,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:
@@ -1173,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);
     }
@@ -1520,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) {
@@ -1606,7 +1606,7 @@
         };
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private static final HashMap<NetworkCapabilities, LegacyRequest> sLegacyRequests =
             new HashMap<>();
 
@@ -1635,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);
@@ -1665,7 +1665,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private boolean removeRequestForFeature(NetworkCapabilities netCap) {
         final LegacyRequest l;
         synchronized (sLegacyRequests) {
@@ -1732,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) {}
     }
 
@@ -1806,7 +1806,7 @@
 
         private volatile Integer mSlot;
 
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public void stop() {
             try {
                 mExecutor.execute(() -> {
@@ -1875,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) {
@@ -2110,7 +2110,7 @@
 
     /** {@hide} */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public NetworkQuotaInfo getActiveNetworkQuotaInfo() {
         try {
             return mService.getActiveNetworkQuotaInfo();
@@ -2408,7 +2408,7 @@
      *
      * {@hide}
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     @Deprecated
     public int tether(String iface) {
         return mTetheringManager.tether(iface);
@@ -2849,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);
@@ -4659,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());
@@ -4816,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/ConnectivityMetricsEvent.java b/core/java/android/net/ConnectivityMetricsEvent.java
index 522add1..8b06ebe 100644
--- a/core/java/android/net/ConnectivityMetricsEvent.java
+++ b/core/java/android/net/ConnectivityMetricsEvent.java
@@ -19,7 +19,7 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 
-import com.android.internal.util.BitUtils;
+import java.util.BitSet;
 
 /**
  * Represents a core networking event defined in package android.net.metrics.
@@ -86,9 +86,7 @@
         if (ifname != null) {
             buffer.append(", ").append(ifname);
         }
-        for (int t : BitUtils.unpackBits(transports)) {
-            buffer.append(", ").append(NetworkCapabilities.transportNameOf(t));
-        }
+        buffer.append(", transports=").append(BitSet.valueOf(new long[] { transports }));
         buffer.append("): ").append(data.toString());
         return buffer.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 5860e20..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;
@@ -76,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);
     }
 
@@ -97,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);
@@ -110,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);
@@ -123,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;
     }
@@ -134,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);
@@ -149,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");
@@ -168,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();
@@ -183,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 059ec28..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);
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/LinkProperties.java b/core/java/android/net/LinkProperties.java
index 616ccbe..06046f7 100644
--- a/core/java/android/net/LinkProperties.java
+++ b/core/java/android/net/LinkProperties.java
@@ -80,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;
@@ -111,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()) {
@@ -849,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();
@@ -1448,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;
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/Network.java b/core/java/android/net/Network.java
index 2561938..f98a1f8 100644
--- a/core/java/android/net/Network.java
+++ b/core/java/android/net/Network.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.system.ErrnoException;
@@ -109,7 +110,7 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public Network(int netId) {
         this(netId, false);
     }
diff --git a/core/java/android/net/NetworkAgent.java b/core/java/android/net/NetworkAgent.java
index 44ebff9..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
@@ -650,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 12ddc62..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;
 
     /**
@@ -339,10 +339,14 @@
     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;
 
@@ -370,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
@@ -708,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.
     }
 
     /**
@@ -801,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.
@@ -1288,7 +1295,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean hasSignalStrength() {
         return mSignalStrength > SIGNAL_STRENGTH_UNSPECIFIED;
     }
@@ -1802,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();
@@ -1927,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) {
diff --git a/core/java/android/net/NetworkIdentity.java b/core/java/android/net/NetworkIdentity.java
index 0948a4da..efbfbf9 100644
--- a/core/java/android/net/NetworkIdentity.java
+++ b/core/java/android/net/NetworkIdentity.java
@@ -17,7 +17,6 @@
 package android.net;
 
 import static android.net.ConnectivityManager.TYPE_WIFI;
-import static android.net.ConnectivityManager.getNetworkTypeName;
 import static android.net.ConnectivityManager.isNetworkTypeMobile;
 
 import android.content.Context;
@@ -84,7 +83,7 @@
     @Override
     public String toString() {
         final StringBuilder builder = new StringBuilder("{");
-        builder.append("type=").append(getNetworkTypeName(mType));
+        builder.append("type=").append(mType);
         builder.append(", subType=");
         if (mSubType == SUBTYPE_COMBINED) {
             builder.append("COMBINED");
diff --git a/core/java/android/net/NetworkPolicyManager.java b/core/java/android/net/NetworkPolicyManager.java
index e9e242e..f05f033 100644
--- a/core/java/android/net/NetworkPolicyManager.java
+++ b/core/java/android/net/NetworkPolicyManager.java
@@ -144,6 +144,8 @@
     public static final String FIREWALL_CHAIN_NAME_STANDBY = "standby";
     /** @hide */
     public static final String FIREWALL_CHAIN_NAME_POWERSAVE = "powersave";
+    /** @hide */
+    public static final String FIREWALL_CHAIN_NAME_RESTRICTED = "restricted";
 
     private static final boolean ALLOW_PLATFORM_APP_POLICY = true;
 
@@ -253,7 +255,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getUidPolicy(int uid) {
         try {
             return mService.getUidPolicy(uid);
@@ -339,7 +341,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void setRestrictBackground(boolean restrictBackground) {
         try {
             mService.setRestrictBackground(restrictBackground);
@@ -349,7 +351,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 d31218d..14cb51c 100644
--- a/core/java/android/net/NetworkProvider.java
+++ b/core/java/android/net/NetworkProvider.java
@@ -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.
      */
@@ -70,7 +63,7 @@
 
     private final Messenger mMessenger;
     private final String mName;
-    private final ConnectivityManager mCm;
+    private final Context mContext;
 
     private int mProviderId = ID_NONE;
 
@@ -85,8 +78,6 @@
      */
     @SystemApi
     public NetworkProvider(@NonNull Context context, @NonNull Looper looper, @NonNull String name) {
-        mCm = ConnectivityManager.from(context);
-
         Handler handler = new Handler(looper) {
             @Override
             public void handleMessage(Message m) {
@@ -102,6 +93,7 @@
                 }
             }
         };
+        mContext = context;
         mMessenger = new Messenger(handler);
         mName = name;
     }
@@ -165,6 +157,6 @@
     @SystemApi
     @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY)
     public void declareNetworkRequestUnfulfillable(@NonNull NetworkRequest request) {
-        mCm.declareNetworkRequestUnfulfillable(request);
+        ConnectivityManager.from(mContext).declareNetworkRequestUnfulfillable(request);
     }
 }
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/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/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/core/java/android/net/OemNetworkPreferences.aidl
similarity index 76%
copy from services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
copy to core/java/android/net/OemNetworkPreferences.aidl
index 45e4c69..2b6a4ce 100644
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ b/core/java/android/net/OemNetworkPreferences.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright (C) 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,10 +14,6 @@
  * limitations under the License.
  */
 
-package android.net.wifi;
+package android.net;
 
-/** @hide */
-parcelable WifiApiServiceInfo {
-    String name;
-    IBinder binder;
-}
+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 62aebb0..6166a75 100644
--- a/core/java/android/net/RouteInfo.java
+++ b/core/java/android/net/RouteInfo.java
@@ -232,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);
@@ -501,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 f56d656..ce54597 100644
--- a/core/java/android/net/StaticIpConfiguration.java
+++ b/core/java/android/net/StaticIpConfiguration.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;
 
@@ -53,19 +54,19 @@
 @SystemApi
 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/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/metrics/ApfProgramEvent.java b/core/java/android/net/metrics/ApfProgramEvent.java
index c50bae9..ab12cdd 100644
--- a/core/java/android/net/metrics/ApfProgramEvent.java
+++ b/core/java/android/net/metrics/ApfProgramEvent.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.text.TextUtils;
@@ -55,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,
@@ -217,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 2a601b2..fcafb7e 100644
--- a/core/java/android/net/metrics/ApfStats.java
+++ b/core/java/android/net/metrics/ApfStats.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;
 
@@ -34,61 +35,61 @@
      * 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) {
diff --git a/core/java/android/net/metrics/ConnectStats.java b/core/java/android/net/metrics/ConnectStats.java
index b320b75..c67259d 100644
--- a/core/java/android/net/metrics/ConnectStats.java
+++ b/core/java/android/net/metrics/ConnectStats.java
@@ -16,14 +16,14 @@
 
 package android.net.metrics;
 
-import android.net.NetworkCapabilities;
 import android.system.OsConstants;
 import android.util.IntArray;
 import android.util.SparseIntArray;
 
-import com.android.internal.util.BitUtils;
 import com.android.internal.util.TokenBucket;
 
+import java.util.BitSet;
+
 /**
  * A class that aggregates connect() statistics.
  * {@hide}
@@ -120,10 +120,9 @@
     @Override
     public String toString() {
         StringBuilder builder =
-                new StringBuilder("ConnectStats(").append("netId=").append(netId).append(", ");
-        for (int t : BitUtils.unpackBits(transports)) {
-            builder.append(NetworkCapabilities.transportNameOf(t)).append(", ");
-        }
+                new StringBuilder("ConnectStats(").append("netId=").append(netId)
+                        .append(", transports=").append(BitSet.valueOf(new long[] { transports }))
+                        .append(", ");
         builder.append(String.format("%d events, ", eventCount));
         builder.append(String.format("%d success, ", connectCount));
         builder.append(String.format("%d blocking, ", connectBlockingCount));
diff --git a/core/java/android/net/metrics/DefaultNetworkEvent.java b/core/java/android/net/metrics/DefaultNetworkEvent.java
index 6f383b4..8988983 100644
--- a/core/java/android/net/metrics/DefaultNetworkEvent.java
+++ b/core/java/android/net/metrics/DefaultNetworkEvent.java
@@ -16,12 +16,7 @@
 
 package android.net.metrics;
 
-import static android.net.ConnectivityManager.NETID_UNSET;
-
-import android.net.NetworkCapabilities;
-
-import com.android.internal.util.BitUtils;
-
+import java.util.BitSet;
 import java.util.StringJoiner;
 
 /**
@@ -32,8 +27,8 @@
 
     // The creation time in milliseconds of this DefaultNetworkEvent.
     public final long creationTimeMs;
-    // The network ID of the network or NETID_UNSET if none.
-    public int netId = NETID_UNSET;
+    // The network ID of the network or 0 if none.
+    public int netId = 0;
     // The list of transport types, as defined in NetworkCapabilities.java.
     public int transports;
     // The list of transport types of the last previous default network.
@@ -63,9 +58,7 @@
     public String toString() {
         StringJoiner j = new StringJoiner(", ", "DefaultNetworkEvent(", ")");
         j.add("netId=" + netId);
-        for (int t : BitUtils.unpackBits(transports)) {
-            j.add(NetworkCapabilities.transportNameOf(t));
-        }
+        j.add("transports=" + BitSet.valueOf(new long[] { transports }));
         j.add("ip=" + ipSupport());
         if (initialScore > 0) {
             j.add("initial_score=" + initialScore);
diff --git a/core/java/android/net/metrics/DhcpClientEvent.java b/core/java/android/net/metrics/DhcpClientEvent.java
index e0a93dd..8de427d 100644
--- a/core/java/android/net/metrics/DhcpClientEvent.java
+++ b/core/java/android/net/metrics/DhcpClientEvent.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.text.TextUtils;
@@ -38,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/DnsEvent.java b/core/java/android/net/metrics/DnsEvent.java
index 5aa705b..bf351ce 100644
--- a/core/java/android/net/metrics/DnsEvent.java
+++ b/core/java/android/net/metrics/DnsEvent.java
@@ -16,11 +16,8 @@
 
 package android.net.metrics;
 
-import android.net.NetworkCapabilities;
-
-import com.android.internal.util.BitUtils;
-
 import java.util.Arrays;
+import java.util.BitSet;
 
 /**
  * A batch of DNS events recorded by NetdEventListenerService for a specific network.
@@ -86,10 +83,10 @@
     @Override
     public String toString() {
         StringBuilder builder =
-                new StringBuilder("DnsEvent(").append("netId=").append(netId).append(", ");
-        for (int t : BitUtils.unpackBits(transports)) {
-            builder.append(NetworkCapabilities.transportNameOf(t)).append(", ");
-        }
+                new StringBuilder("DnsEvent(").append("netId=").append(netId)
+                        .append(", transports=")
+                        .append(BitSet.valueOf(new long[] { transports }))
+                        .append(", ");
         builder.append(String.format("%d events, ", eventCount));
         builder.append(String.format("%d success)", successCount));
         return builder.toString();
diff --git a/core/java/android/net/metrics/NetworkMetrics.java b/core/java/android/net/metrics/NetworkMetrics.java
index 66d92c4..8f2f612 100644
--- a/core/java/android/net/metrics/NetworkMetrics.java
+++ b/core/java/android/net/metrics/NetworkMetrics.java
@@ -16,11 +16,9 @@
 
 package android.net.metrics;
 
-import android.net.NetworkCapabilities;
-
-import com.android.internal.util.BitUtils;
 import com.android.internal.util.TokenBucket;
 
+import java.util.BitSet;
 import java.util.StringJoiner;
 
 /**
@@ -144,9 +142,7 @@
         public String toString() {
             StringJoiner j = new StringJoiner(", ", "{", "}");
             j.add("netId=" + netId);
-            for (int t : BitUtils.unpackBits(transports)) {
-                j.add(NetworkCapabilities.transportNameOf(t));
-            }
+            j.add("transports=" + BitSet.valueOf(new long[] { transports }));
             j.add(String.format("dns avg=%dms max=%dms err=%.1f%% tot=%d",
                     (int) dnsLatencies.average(), (int) dnsLatencies.max,
                     100 * dnsErrorRate.average(), dnsErrorRate.count));
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/vcn/IVcnManagementService.aidl b/core/java/android/net/vcn/IVcnManagementService.aidl
index af06906..9dd0114 100644
--- a/core/java/android/net/vcn/IVcnManagementService.aidl
+++ b/core/java/android/net/vcn/IVcnManagementService.aidl
@@ -16,8 +16,13 @@
 
 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/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/core/java/android/net/vcn/VcnConfig.aidl
similarity index 78%
rename from services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
rename to core/java/android/net/vcn/VcnConfig.aidl
index 45e4c69..67006a4 100644
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ b/core/java/android/net/vcn/VcnConfig.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright (C) 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,10 +14,7 @@
  * limitations under the License.
  */
 
-package android.net.wifi;
+package android.net.vcn;
 
 /** @hide */
-parcelable WifiApiServiceInfo {
-    String name;
-    IBinder binder;
-}
+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
index d563b03..6769b9e 100644
--- a/core/java/android/net/vcn/VcnManager.java
+++ b/core/java/android/net/vcn/VcnManager.java
@@ -18,11 +18,14 @@
 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
+ * VcnManager publishes APIs for applications to configure and manage Virtual Carrier Networks.
  *
  * @hide
  */
@@ -45,4 +48,56 @@
         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 9a16d3f..6d4593a 100644
--- a/core/java/android/os/BatteryManager.java
+++ b/core/java/android/os/BatteryManager.java
@@ -120,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";
 
     /**
@@ -128,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";
 
     /**
@@ -136,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";
 
     /**
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/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 11665fb..d3eb395 100644
--- a/core/java/android/os/Environment.java
+++ b/core/java/android/os/Environment.java
@@ -681,7 +681,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public static File getLegacyExternalStorageObbDirectory() {
         return buildPath(getLegacyExternalStorageDirectory(), DIR_ANDROID, DIR_OBB);
     }
@@ -1002,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/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/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/HwBinder.java b/core/java/android/os/HwBinder.java
index 0d2bfdf..feed208 100644
--- a/core/java/android/os/HwBinder.java
+++ b/core/java/android/os/HwBinder.java
@@ -159,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/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/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl
index 136f612..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);
 
     /**
@@ -291,7 +291,7 @@
     /**
      * Return status of bandwidth control module.
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isBandwidthControlEnabled();
 
     /**
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/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/Parcel.java b/core/java/android/os/Parcel.java
index fe70a88..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() {
@@ -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/ParcelableHolder.java b/core/java/android/os/ParcelableHolder.java
index 95c07b6..fb9fa10 100644
--- a/core/java/android/os/ParcelableHolder.java
+++ b/core/java/android/os/ParcelableHolder.java
@@ -170,16 +170,21 @@
 
         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);
@@ -196,6 +201,11 @@
             return;
         }
 
+        if (mParcelable == null) {
+            parcel.writeInt(0);
+            return;
+        }
+
         int sizePos = parcel.dataPosition();
         parcel.writeInt(0);
         int dataStartPos = parcel.dataPosition();
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 0b211cf..49b4e00 100644
--- a/core/java/android/os/PowerManager.java
+++ b/core/java/android/os/PowerManager.java
@@ -65,7 +65,7 @@
     /* 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 (in frameworks/base/core/proto/android/os/enums.proto) can be used.
+     * value (in frameworks/proto_logging/stats/enums/os/enums.proto) can be used.
      */
 
     /**
@@ -1013,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);
@@ -2207,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/Process.java b/core/java/android/os/Process.java
index 7a48a2a..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;
 
@@ -1164,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/ServiceManager.java b/core/java/android/os/ServiceManager.java
index 35e7bad..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 {
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/SystemProperties.java b/core/java/android/os/SystemProperties.java
index a164527..ab74199 100644
--- a/core/java/android/os/SystemProperties.java
+++ b/core/java/android/os/SystemProperties.java
@@ -60,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 */
@@ -256,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/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 5357cf3..bef876f9 100644
--- a/core/java/android/os/UserHandle.java
+++ b/core/java/android/os/UserHandle.java
@@ -97,7 +97,7 @@
     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 */
@@ -133,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. */
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index b748a0d..67d5f5f 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -1020,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";
 
     /**
@@ -1662,7 +1662,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean canSwitchUsers() {
         boolean allowUserSwitchingWhenSystemUserLocked = Settings.Global.getInt(
                 mContext.getContentResolver(),
@@ -2024,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) {
@@ -2355,7 +2355,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getUserStartRealtime() {
         try {
             return mService.getUserStartRealtime();
@@ -2370,7 +2370,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public long getUserUnlockRealtime() {
         try {
             return mService.getUserUnlockRealtime();
@@ -3172,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);
@@ -4132,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/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/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 00848b9..648d934 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -60,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;
@@ -293,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;
 
@@ -633,7 +634,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void enableUsbMassStorage() {
     }
 
@@ -643,7 +644,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void disableUsbMassStorage() {
     }
 
@@ -654,7 +655,7 @@
      * @hide
      */
     @Deprecated
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean isUsbMassStorageConnected() {
         return false;
     }
@@ -810,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
@@ -1031,7 +1032,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void format(String volId) {
         try {
             mStorageManager.format(volId);
@@ -1073,7 +1074,7 @@
     }
 
     /** {@hide} */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void partitionPublic(String diskId) {
         try {
             mStorageManager.partitionPublic(diskId);
@@ -1235,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;
@@ -1483,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);
@@ -1600,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;
@@ -2220,7 +2221,7 @@
     /** @hide */
     @SystemApi
     @WorkerThread
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public long getAllocatableBytes(@NonNull UUID storageUuid,
             @RequiresPermission @AllocateFlags int flags) throws IOException {
         try {
@@ -2269,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 {
@@ -2319,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);
@@ -2682,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 d7aaa4d6..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/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/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java
index 6c9b7d8..9339575 100644
--- a/core/java/android/provider/DocumentsContract.java
+++ b/core/java/android/provider/DocumentsContract.java
@@ -841,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";
@@ -876,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";
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 7a478eb..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;
@@ -923,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";
 
@@ -1874,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";
 
     /**
@@ -2402,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;
 
@@ -3047,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);
 
@@ -3096,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<>();
@@ -4247,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";
 
         /**
@@ -4542,7 +4543,7 @@
          * 3 = HCO
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String TTY_MODE = "tty_mode";
 
         /**
@@ -4569,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";
 
         /**
@@ -4578,7 +4579,7 @@
          * 1 = yes
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String POINTER_LOCATION = "pointer_location";
 
         /**
@@ -4587,7 +4588,7 @@
          * 1 = yes
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String SHOW_TOUCHES = "show_touches";
 
         /**
@@ -4615,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";
 
         /**
@@ -4645,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;
 
         /**
@@ -4654,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;
 
         /**
@@ -4663,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;
 
         /**
@@ -4672,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;
 
         /**
@@ -4681,7 +4682,7 @@
          * @hide
          */
         @Deprecated
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String LOCK_SOUND = Global.LOCK_SOUND;
 
         /**
@@ -4690,7 +4691,7 @@
          * @hide
          */
         @Deprecated
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String UNLOCK_SOUND = Global.UNLOCK_SOUND;
 
         /**
@@ -4739,7 +4740,7 @@
          *   +7 = fastest
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String POINTER_SPEED = "pointer_speed";
 
         /**
@@ -4797,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);
@@ -4856,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);
@@ -4905,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);
@@ -5232,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);
 
@@ -5472,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) {
@@ -5712,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);
@@ -5776,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);
@@ -6448,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";
 
 
@@ -6490,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";
 
@@ -6621,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";
@@ -6975,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";
 
@@ -7015,7 +7016,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String ACCESSIBILITY_DISPLAY_DALTONIZER =
                 "accessibility_display_daltonizer";
 
@@ -7402,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";
 
         /**
@@ -7411,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";
 
         /**
@@ -7419,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";
 
         /**
@@ -7598,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";
 
         /**
@@ -7615,7 +7616,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String VOICE_RECOGNITION_SERVICE = "voice_recognition_service";
 
         /**
@@ -7624,7 +7625,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public static final String SELECTED_SPELL_CHECKER = "selected_spell_checker";
 
         /**
@@ -7634,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";
 
@@ -7929,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";
 
@@ -7943,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";
 
         /**
@@ -8088,7 +8089,7 @@
         /**
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @TestApi
         public static final String IMMERSIVE_MODE_CONFIRMATIONS = "immersive_mode_confirmations";
 
@@ -8483,7 +8484,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @TestApi
         public static final String ENABLED_VR_LISTENERS = "enabled_vr_listeners";
 
@@ -8652,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";
 
@@ -9866,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";
 
         /**
@@ -10218,7 +10219,7 @@
         * by the system).
         * @hide
         */
-       @UnsupportedAppUsage
+       @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
        public static final String WEBVIEW_PROVIDER = "webview_provider";
 
        /**
@@ -10610,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";
 
@@ -10788,7 +10789,7 @@
          *
          * @hide
          */
-        @UnsupportedAppUsage
+        @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         @TestApi
         public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices";
 
@@ -11462,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";
 
@@ -12187,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";
 
@@ -12772,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) {
@@ -12835,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;
 
         /**
@@ -13326,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);
 
@@ -13376,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)) {
@@ -13526,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,
@@ -14997,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 a444b47..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) {
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 f08756a..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,199 +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_HARDWARE_TYPE_UNAVAILABLE = -68;
-    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 {
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/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/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/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/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java
index 536c9c0..1d5f7fb 100644
--- a/core/java/android/service/notification/NotificationListenerService.java
+++ b/core/java/android/service/notification/NotificationListenerService.java
@@ -310,7 +310,7 @@
     private Handler mHandler;
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     protected NotificationListenerWrapper mWrapper = null;
     private boolean isConnected = false;
 
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/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/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java
index e083417..3eb9ce81 100644
--- a/core/java/android/service/wallpaper/WallpaperService.java
+++ b/core/java/android/service/wallpaper/WallpaperService.java
@@ -124,7 +124,7 @@
     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;
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 0896f57..d6ae434 100644
--- a/core/java/android/telephony/PhoneStateListener.java
+++ b/core/java/android/telephony/PhoneStateListener.java
@@ -834,7 +834,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void onDataConnectionRealTimeInfoChanged(
             DataConnectionRealTimeInfo dcRtInfo) {
         // default implementation empty
@@ -1040,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
     }
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/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/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 4a0bec1..8900dfd 100755
--- a/core/java/android/text/format/DateFormat.java
+++ b/core/java/android/text/format/DateFormat.java
@@ -19,7 +19,7 @@
 import android.annotation.NonNull;
 import android.app.compat.CompatChanges;
 import android.compat.annotation.ChangeId;
-import android.compat.annotation.EnabledAfter;
+import android.compat.annotation.EnabledSince;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.icu.text.DateFormatSymbols;
@@ -169,7 +169,7 @@
      * mean using 12-hour in some locales and, in this case, is duplicated as the 'a' field.
      */
     @ChangeId
-    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.R)
+    @EnabledSince(targetSdkVersion = Build.VERSION_CODES.CUR_DEVELOPMENT)
     static final long DISALLOW_DUPLICATE_FIELD_IN_SKELETON = 170233598L;
 
     /**
@@ -459,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/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 0093273..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;
@@ -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/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/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/proto/android/stats/devicepolicy/device_policy.proto b/core/java/android/uwb/MeasurementStatus.aidl
similarity index 62%
rename from core/proto/android/stats/devicepolicy/device_policy.proto
rename to core/java/android/uwb/MeasurementStatus.aidl
index af30cf3..5fa1554 100644
--- a/core/proto/android/stats/devicepolicy/device_policy.proto
+++ b/core/java/android/uwb/MeasurementStatus.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 The Android Open Source Project
+ * 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.
@@ -14,11 +14,26 @@
  * limitations under the License.
  */
 
-syntax = "proto2";
+package android.uwb;
 
-package android.stats.devicepolicy;
-option java_multiple_files = true;
+/**
+ * @hide
+ */
+@Backing(type="int")
+enum MeasurementStatus {
+  /**
+   * Ranging was successful
+   */
+  SUCCESS,
 
-message StringList {
-  repeated string string_value = 1;
+  /**
+   * 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/RangingParams.java b/core/java/android/uwb/RangingParams.java
deleted file mode 100644
index f23d9ed..0000000
--- a/core/java/android/uwb/RangingParams.java
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- * 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.os.Parcel;
-import android.os.Parcelable;
-import android.os.PersistableBundle;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.time.Duration;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-
-/**
- * An object used when requesting to open a new {@link RangingSession}.
- * <p>Use {@link RangingParams.Builder} to create an instance of this class.
- *
- *  @hide
- */
-public final class RangingParams implements Parcelable {
-    private final boolean mIsInitiator;
-    private final boolean mIsController;
-    private final Duration mSamplePeriod;
-    private final UwbAddress mLocalDeviceAddress;
-    private final List<UwbAddress> mRemoteDeviceAddresses;
-    private final int mChannelNumber;
-    private final int mTransmitPreambleCodeIndex;
-    private final int mReceivePreambleCodeIndex;
-    private final int mStsPhyPacketType;
-    private final PersistableBundle mSpecificationParameters;
-
-    private RangingParams(boolean isInitiator, boolean isController,
-            @NonNull Duration samplingPeriod, @NonNull UwbAddress localDeviceAddress,
-            @NonNull List<UwbAddress> remoteDeviceAddresses, int channelNumber,
-            int transmitPreambleCodeIndex, int receivePreambleCodeIndex,
-            @StsPhyPacketType int stsPhyPacketType,
-            @NonNull PersistableBundle specificationParameters) {
-        mIsInitiator = isInitiator;
-        mIsController = isController;
-        mSamplePeriod = samplingPeriod;
-        mLocalDeviceAddress = localDeviceAddress;
-        mRemoteDeviceAddresses = remoteDeviceAddresses;
-        mChannelNumber = channelNumber;
-        mTransmitPreambleCodeIndex = transmitPreambleCodeIndex;
-        mReceivePreambleCodeIndex = receivePreambleCodeIndex;
-        mStsPhyPacketType = stsPhyPacketType;
-        mSpecificationParameters = specificationParameters;
-    }
-
-    /**
-     * Get if the local device is the initiator
-     *
-     * @return true if the device is the initiator
-     */
-    public boolean isInitiator() {
-        return mIsInitiator;
-    }
-
-    /**
-     * Get if the local device is the controller
-     *
-     * @return true if the device is the controller
-     */
-    public boolean isController() {
-        return mIsController;
-    }
-
-    /**
-     * The desired amount of time between two adjacent samples of measurement
-     *
-     * @return the ranging sample period
-     */
-    @NonNull
-    public Duration getSamplingPeriod() {
-        return mSamplePeriod;
-    }
-
-    /**
-     * Local device's {@link UwbAddress}
-     *
-     * <p>Simultaneous {@link RangingSession}s on the same device can have different results for
-     * {@link #getLocalDeviceAddress()}.
-     *
-     * @return the local device's {@link UwbAddress}
-     */
-    @NonNull
-    public UwbAddress getLocalDeviceAddress() {
-        return mLocalDeviceAddress;
-    }
-
-    /**
-     * Gets a list of all remote device's {@link UwbAddress}
-     *
-     * @return a {@link List} of {@link UwbAddress} representing the remote devices
-     */
-    @NonNull
-    public List<UwbAddress> getRemoteDeviceAddresses() {
-        return mRemoteDeviceAddresses;
-    }
-
-    /**
-     * Channel number used between this device pair as defined by 802.15.4z
-     *
-     * Range: -1, 0-15
-     *
-     * @return the channel to use
-     */
-    public int getChannelNumber() {
-        return mChannelNumber;
-    }
-
-    /**
-     * Preamble index used between this device pair as defined by 802.15.4z
-     *
-     * Range: 0, 0-32
-     *
-     * @return the preamble index to use for transmitting
-     */
-    public int getTxPreambleIndex() {
-        return mTransmitPreambleCodeIndex;
-    }
-
-    /**
-     * preamble index used between this device pair as defined by 802.15.4z
-     *
-     * Range: 0, 13-16, 21-32
-     *
-     * @return the preamble index to use for receiving
-     */
-    public int getRxPreambleIndex() {
-        return mReceivePreambleCodeIndex;
-    }
-
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(value = {
-            STS_PHY_PACKET_TYPE_SP0,
-            STS_PHY_PACKET_TYPE_SP1,
-            STS_PHY_PACKET_TYPE_SP2,
-            STS_PHY_PACKET_TYPE_SP3})
-    public @interface StsPhyPacketType {}
-
-    /**
-     * PHY packet type SP0 when STS is used as defined by 802.15.4z
-     */
-    public static final int STS_PHY_PACKET_TYPE_SP0 = 0;
-
-    /**
-     * PHY packet type SP1 when STS is used as defined by 802.15.4z
-     */
-    public static final int STS_PHY_PACKET_TYPE_SP1 = 1;
-
-    /**
-     * PHY packet type SP2 when STS is used as defined by 802.15.4z
-     */
-    public static final int STS_PHY_PACKET_TYPE_SP2 = 2;
-
-    /**
-     * PHY packet type SP3 when STS is used as defined by 802.15.4z
-     */
-    public static final int STS_PHY_PACKET_TYPE_SP3 = 3;
-
-    /**
-     * Get the type of PHY packet when STS is used as defined by 802.15.4z
-     *
-     * @return the {@link StsPhyPacketType} to use
-     */
-    @StsPhyPacketType
-    public int getStsPhyPacketType() {
-        return mStsPhyPacketType;
-    }
-
-    /**
-     * Parameters for a specific UWB protocol constructed using a support library.
-     *
-     * <p>Android reserves the '^android.*' namespace
-     *
-     * @return a {@link PersistableBundle} copy of protocol specific parameters
-     */
-    public @Nullable PersistableBundle getSpecificationParameters() {
-        return new PersistableBundle(mSpecificationParameters);
-    }
-
-    /**
-     * @hide
-     */
-    @Override
-    public boolean equals(@Nullable Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof RangingParams) {
-            RangingParams other = (RangingParams) obj;
-
-            return mIsInitiator == other.mIsInitiator
-                    && mIsController == other.mIsController
-                    && mSamplePeriod.equals(other.mSamplePeriod)
-                    && mLocalDeviceAddress.equals(other.mLocalDeviceAddress)
-                    && mRemoteDeviceAddresses.equals(other.mRemoteDeviceAddresses)
-                    && mChannelNumber == other.mChannelNumber
-                    && mTransmitPreambleCodeIndex == other.mTransmitPreambleCodeIndex
-                    && mReceivePreambleCodeIndex == other.mReceivePreambleCodeIndex
-                    && mStsPhyPacketType == other.mStsPhyPacketType
-                    && mSpecificationParameters.size() == other.mSpecificationParameters.size()
-                    && mSpecificationParameters.kindofEquals(other.mSpecificationParameters);
-        }
-        return false;
-    }
-
-    /**
-     * @hide
-     */
-    @Override
-    public int hashCode() {
-        return Objects.hash(mIsInitiator, mIsController, mSamplePeriod, mLocalDeviceAddress,
-                mRemoteDeviceAddresses, mChannelNumber, mTransmitPreambleCodeIndex,
-                mReceivePreambleCodeIndex, mStsPhyPacketType, mSpecificationParameters);
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeBoolean(mIsInitiator);
-        dest.writeBoolean(mIsController);
-        dest.writeLong(mSamplePeriod.getSeconds());
-        dest.writeInt(mSamplePeriod.getNano());
-        dest.writeParcelable(mLocalDeviceAddress, flags);
-
-        UwbAddress[] remoteAddresses = new UwbAddress[mRemoteDeviceAddresses.size()];
-        mRemoteDeviceAddresses.toArray(remoteAddresses);
-        dest.writeParcelableArray(remoteAddresses, flags);
-
-        dest.writeInt(mChannelNumber);
-        dest.writeInt(mTransmitPreambleCodeIndex);
-        dest.writeInt(mReceivePreambleCodeIndex);
-        dest.writeInt(mStsPhyPacketType);
-        dest.writePersistableBundle(mSpecificationParameters);
-    }
-
-    public static final @android.annotation.NonNull Creator<RangingParams> CREATOR =
-            new Creator<RangingParams>() {
-                @Override
-                public RangingParams createFromParcel(Parcel in) {
-                    Builder builder = new Builder();
-                    builder.setIsInitiator(in.readBoolean());
-                    builder.setIsController(in.readBoolean());
-                    builder.setSamplePeriod(Duration.ofSeconds(in.readLong(), in.readInt()));
-                    builder.setLocalDeviceAddress(
-                            in.readParcelable(UwbAddress.class.getClassLoader()));
-
-                    UwbAddress[] remoteAddresses =
-                            in.readParcelableArray(null, UwbAddress.class);
-                    for (UwbAddress remoteAddress : remoteAddresses) {
-                        builder.addRemoteDeviceAddress(remoteAddress);
-                    }
-
-                    builder.setChannelNumber(in.readInt());
-                    builder.setTransmitPreambleCodeIndex(in.readInt());
-                    builder.setReceivePreambleCodeIndex(in.readInt());
-                    builder.setStsPhPacketType(in.readInt());
-                    builder.setSpecificationParameters(in.readPersistableBundle());
-
-                    return builder.build();
-                }
-
-                @Override
-                public RangingParams[] newArray(int size) {
-                    return new RangingParams[size];
-                }
-    };
-
-    /**
-     * Builder class for {@link RangingParams}.
-     */
-    public static final class Builder {
-        private boolean mIsInitiator = false;
-        private boolean mIsController = false;
-        private Duration mSamplePeriod = null;
-        private UwbAddress mLocalDeviceAddress = null;
-        private List<UwbAddress> mRemoteDeviceAddresses = new ArrayList<>();
-        private int mChannelNumber = 0;
-        private int mTransmitPreambleCodeIndex = 0;
-        private int mReceivePreambleCodeIndex = 0;
-        private int mStsPhyPacketType = STS_PHY_PACKET_TYPE_SP0;
-        private PersistableBundle mSpecificationParameters = new PersistableBundle();
-
-        /**
-         * Set whether the device is the initiator or responder as defined by IEEE 802.15.4z
-         *
-         * @param isInitiator whether the device is the initiator (true) or responder (false)
-         */
-        public Builder setIsInitiator(boolean isInitiator) {
-            mIsInitiator = isInitiator;
-            return this;
-        }
-
-        /**
-         * Set whether the local device is the controller or controlee as defined by IEEE 802.15.4z
-         *
-         * @param isController whether the device is the controller (true) or controlee (false)
-         */
-        public Builder setIsController(boolean isController) {
-            mIsController = isController;
-            return this;
-        }
-
-        /**
-         * Set the time between ranging samples
-         *
-         * @param samplePeriod the time between ranging samples
-         */
-        public Builder setSamplePeriod(@NonNull Duration samplePeriod) {
-            mSamplePeriod = samplePeriod;
-            return this;
-        }
-
-        /**
-         * Set the local device address
-         *
-         * @param localDeviceAddress the local device's address for the {@link RangingSession}
-         */
-        public Builder setLocalDeviceAddress(@NonNull UwbAddress localDeviceAddress) {
-            mLocalDeviceAddress = localDeviceAddress;
-            return this;
-        }
-
-        /**
-         * Add a remote device's address to the ranging session
-         *
-         * @param remoteDeviceAddress a remote device's address for the {@link RangingSession}
-         * @throws IllegalArgumentException if {@code remoteDeviceAddress} is already present.
-         */
-        public Builder addRemoteDeviceAddress(@NonNull UwbAddress remoteDeviceAddress) {
-            if (mRemoteDeviceAddresses.contains(remoteDeviceAddress)) {
-                throw new IllegalArgumentException(
-                        "Remote device address already added: " + remoteDeviceAddress.toString());
-            }
-            mRemoteDeviceAddresses.add(remoteDeviceAddress);
-            return this;
-        }
-
-        /**
-         * Set the IEEE 802.15.4z channel to use for the {@link RangingSession}
-         * <p>Valid values are in the range [-1, 15]
-         *
-         * @param channelNumber the channel to use for the {@link RangingSession}
-         * @throws IllegalArgumentException if {@code channelNumber} is invalid.
-         */
-        public Builder setChannelNumber(int channelNumber) {
-            if (channelNumber < -1 || channelNumber > 15) {
-                throw new IllegalArgumentException("Invalid channel number");
-            }
-            mChannelNumber = channelNumber;
-            return this;
-        }
-
-        private static final Set<Integer> VALID_TX_PREAMBLE_CODES = new HashSet<Integer>(
-                Arrays.asList(0, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32));
-
-        /**
-         * Set the IEEE 802.15.4z preamble code index to use when transmitting
-         *
-         * <p>Valid values are in the ranges: [0], [13-16], [21-32]
-         *
-         * @param transmitPreambleCodeIndex preamble code index to use for transmitting
-         * @throws IllegalArgumentException if {@code transmitPreambleCodeIndex} is invalid.
-         */
-        public Builder setTransmitPreambleCodeIndex(int transmitPreambleCodeIndex) {
-            if (!VALID_TX_PREAMBLE_CODES.contains(transmitPreambleCodeIndex)) {
-                throw new IllegalArgumentException(
-                        "Invalid transmit preamble: " + transmitPreambleCodeIndex);
-            }
-            mTransmitPreambleCodeIndex = transmitPreambleCodeIndex;
-            return this;
-        }
-
-        private static final Set<Integer> VALID_RX_PREAMBLE_CODES = new HashSet<Integer>(
-                Arrays.asList(0, 16, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32));
-
-        /**
-         * Set the IEEE 802.15.4z preamble code index to use when receiving
-         *
-         * Valid values are in the ranges: [0], [16-32]
-         *
-         * @param receivePreambleCodeIndex preamble code index to use for receiving
-         * @throws IllegalArgumentException if {@code receivePreambleCodeIndex} is invalid.
-         */
-        public Builder setReceivePreambleCodeIndex(int receivePreambleCodeIndex) {
-            if (!VALID_RX_PREAMBLE_CODES.contains(receivePreambleCodeIndex)) {
-                throw new IllegalArgumentException(
-                        "Invalid receive preamble: " + receivePreambleCodeIndex);
-            }
-            mReceivePreambleCodeIndex = receivePreambleCodeIndex;
-            return this;
-        }
-
-        /**
-         * Set the IEEE 802.15.4z PHY packet type when STS is used
-         *
-         * @param stsPhyPacketType PHY packet type when STS is used
-         * @throws IllegalArgumentException if {@code stsPhyPacketType} is invalid.
-         */
-        public Builder setStsPhPacketType(@StsPhyPacketType int stsPhyPacketType) {
-            if (stsPhyPacketType != STS_PHY_PACKET_TYPE_SP0
-                    && stsPhyPacketType != STS_PHY_PACKET_TYPE_SP1
-                    && stsPhyPacketType != STS_PHY_PACKET_TYPE_SP2
-                    && stsPhyPacketType != STS_PHY_PACKET_TYPE_SP3) {
-                throw new IllegalArgumentException("unknown StsPhyPacketType: " + stsPhyPacketType);
-            }
-
-            mStsPhyPacketType = stsPhyPacketType;
-            return this;
-        }
-
-        /**
-         * Set the specification parameters
-         *
-         * <p>Creates a copy of the parameters
-         *
-         * @param parameters specification parameters built from support library
-         */
-        public Builder setSpecificationParameters(@NonNull PersistableBundle parameters) {
-            mSpecificationParameters = new PersistableBundle(parameters);
-            return this;
-        }
-
-        /**
-         * Build the {@link RangingParams} object.
-         *
-         * @throws IllegalStateException if required parameters are missing
-         */
-        public RangingParams build() {
-            if (mSamplePeriod == null) {
-                throw new IllegalStateException("No sample period provided");
-            }
-
-            if (mLocalDeviceAddress == null) {
-                throw new IllegalStateException("Local device address not provided");
-            }
-
-            if (mRemoteDeviceAddresses.size() == 0) {
-                throw new IllegalStateException("No remote device address(es) provided");
-            }
-
-            return new RangingParams(mIsInitiator, mIsController, mSamplePeriod,
-                    mLocalDeviceAddress, mRemoteDeviceAddresses, mChannelNumber,
-                    mTransmitPreambleCodeIndex, mReceivePreambleCodeIndex, mStsPhyPacketType,
-                    mSpecificationParameters);
-        }
-    }
-}
diff --git a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/core/java/android/uwb/RangingReport.aidl
similarity index 76%
copy from services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
copy to core/java/android/uwb/RangingReport.aidl
index 45e4c69..c32747a 100644
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ b/core/java/android/uwb/RangingReport.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * 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.
@@ -14,10 +14,6 @@
  * limitations under the License.
  */
 
-package android.net.wifi;
+package android.uwb;
 
-/** @hide */
-parcelable WifiApiServiceInfo {
-    String name;
-    IBinder binder;
-}
+parcelable RangingReport;
diff --git a/core/java/android/uwb/RangingSession.java b/core/java/android/uwb/RangingSession.java
index f4033fe..8639269 100644
--- a/core/java/android/uwb/RangingSession.java
+++ b/core/java/android/uwb/RangingSession.java
@@ -30,7 +30,7 @@
  * {@link RangingSession}.
  *
  * <p>To get an instance of {@link RangingSession}, first use
- * {@link UwbManager#openRangingSession(RangingParams, Executor, Callback)} to request to open a
+ * {@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
@@ -44,7 +44,7 @@
      */
     public interface Callback {
         /**
-         * Invoked when {@link UwbManager#openRangingSession(RangingParams, Executor, Callback)}
+         * Invoked when {@link UwbManager#openRangingSession(PersistableBundle, Executor, Callback)}
          * is successful
          *
          * @param session the newly opened {@link RangingSession}
@@ -77,7 +77,7 @@
 
         /**
          * Indicates that the session failed to open due to erroneous parameters passed
-         * to {@link UwbManager#openRangingSession(RangingParams, Executor, Callback)}
+         * to {@link UwbManager#openRangingSession(PersistableBundle, Executor, Callback)}
          */
         int CLOSE_REASON_LOCAL_BAD_PARAMETERS = 2;
 
@@ -137,8 +137,8 @@
      * will still be invoked.
      *
      * <p>{@link Callback#onClosed(int)} will be invoked using the same callback
-     * object given to {@link UwbManager#openRangingSession(RangingParams, Executor, Callback)} when
-     * the {@link RangingSession} was opened. The callback will be invoked after each call to
+     * 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
diff --git a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/core/java/android/uwb/SessionHandle.aidl
similarity index 76%
copy from services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
copy to core/java/android/uwb/SessionHandle.aidl
index 45e4c69..58a7dbb 100644
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ b/core/java/android/uwb/SessionHandle.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * 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.
@@ -14,10 +14,6 @@
  * limitations under the License.
  */
 
-package android.net.wifi;
+package android.uwb;
 
-/** @hide */
-parcelable WifiApiServiceInfo {
-    String name;
-    IBinder binder;
-}
+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/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/core/java/android/uwb/UwbAddress.aidl
similarity index 76%
copy from services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
copy to core/java/android/uwb/UwbAddress.aidl
index 45e4c69..a202b1a 100644
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ b/core/java/android/uwb/UwbAddress.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * 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.
@@ -14,10 +14,6 @@
  * limitations under the License.
  */
 
-package android.net.wifi;
+package android.uwb;
 
-/** @hide */
-parcelable WifiApiServiceInfo {
-    String name;
-    IBinder binder;
-}
+parcelable UwbAddress;
diff --git a/core/java/android/uwb/UwbManager.java b/core/java/android/uwb/UwbManager.java
index d58d5bf..2f1e2de 100644
--- a/core/java/android/uwb/UwbManager.java
+++ b/core/java/android/uwb/UwbManager.java
@@ -176,15 +176,14 @@
      * 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 = 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 = 3;
-
+    public static final int ANGLE_OF_ARRIVAL_SUPPORT_TYPE_3D_SPHERICAL = 4;
 
     /**
      * Gets the {@link AngleOfArrivalSupportType} supported on this platform
@@ -280,7 +279,10 @@
      * <p>An open {@link RangingSession} will be automatically closed if client application process
      * dies.
      *
-     * @param params {@link RangingParams} used to initialize this {@link RangingSession}
+     * <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.
@@ -291,8 +293,9 @@
      *         {@link RangingSession.Callback#onOpenSuccess}.
      */
     @NonNull
-    public AutoCloseable openRangingSession(@NonNull RangingParams params,
-            @NonNull Executor executor, @NonNull RangingSession.Callback callbacks) {
+    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 bcf3b49..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;
     }
@@ -1913,7 +1913,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void scheduleTraversals() {
         if (!mTraversalScheduled) {
             mTraversalScheduled = true;
@@ -5151,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);
@@ -7184,7 +7184,7 @@
     }
 
     /* drag/drop */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void setLocalDragState(Object obj) {
         mLocalDragState = obj;
     }
@@ -7946,7 +7946,7 @@
         }
     }
 
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     void enqueueInputEvent(InputEvent event) {
         enqueueInputEvent(event, null, 0, false);
     }
@@ -8352,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
@@ -8361,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 c0f92fd..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 */
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
index 8bc7f3c..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)) {
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/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.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/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/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/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/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/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 92ed904..1071d9f 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -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();
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 60f1b44..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;
@@ -257,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 aa37334..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);
@@ -620,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/telephony/ITelephonyRegistry.aidl b/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl
index ea09fc8..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);
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 a87e080f..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 9ef9f697..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/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_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_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_Parcel.cpp b/core/jni/android_os_Parcel.cpp
index 9c7ee0c..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);
@@ -758,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/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp
index 95c295a4..6381cf5 100644
--- a/core/jni/com_android_internal_os_Zygote.cpp
+++ b/core/jni/com_android_internal_os_Zygote.cpp
@@ -78,7 +78,6 @@
 #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>
@@ -804,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)));
   }
@@ -1194,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];
@@ -1207,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);
 }
 
@@ -1284,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
@@ -1642,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,
@@ -1799,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/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 542d26f..748b4b4 100644
--- a/core/proto/OWNERS
+++ b/core/proto/OWNERS
@@ -25,3 +25,8 @@
 
 # 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 98ba029..0000000
--- a/core/proto/android/app/enums.proto
+++ /dev/null
@@ -1,213 +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;
-    APP_OP_RESERVED_100 = 100;
-    APP_OP_RESERVED_101 = 101;
-    APP_OP_RESERVED_102 = 102;
-}
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/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_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 48275f6..e6619f5 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -2193,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-->
@@ -3027,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/config.xml b/core/res/res/values/config.xml
index 4548f3a..7fdbad0 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1532,6 +1532,14 @@
     <!-- Class name of WallpaperManagerService. -->
     <string name="config_wallpaperManagerServiceName" translatable="false">com.android.server.wallpaper.WallpaperManagerService</string>
 
+    <!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
+         take precedence over lower ones.
+         See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
+    <string-array name="config_autoTimeSourcesPriority">
+        <item>telephony</item>
+        <item>network</item>
+    </string-array>
+
     <!-- Enables the TimeZoneRuleManager service. This is the global switch for the updateable time
          zone update mechanism. -->
     <bool name="config_enableUpdateableTimeZoneRules">false</bool>
@@ -2792,6 +2800,7 @@
         <item>power</item>
         <item>restart</item>
         <item>logout</item>
+        <item>screenshot</item>
         <item>bugreport</item>
     </string-array>
 
@@ -3506,6 +3515,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>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index c51dca1..36e94e5 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2161,6 +2161,7 @@
   <java-symbol type="string" name="config_defaultNetworkScorerPackageName" />
   <java-symbol type="string" name="config_persistentDataPackageName" />
   <java-symbol type="string" name="config_deviceConfiguratorPackageName" />
+  <java-symbol type="array" name="config_autoTimeSourcesPriority" />
 
   <java-symbol type="layout" name="resolver_list" />
   <java-symbol type="id" name="resolver_list" />
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/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/hdmitests/Android.bp b/core/tests/hdmitests/Android.bp
index 2194d4b..4755e0e 100644
--- a/core/tests/hdmitests/Android.bp
+++ b/core/tests/hdmitests/Android.bp
@@ -19,6 +19,7 @@
     static_libs: [
         "androidx.test.rules",
         "frameworks-base-testutils",
+        "guava-android-testlib",
         "truth-prebuilt",
     ],
     libs: ["android.test.runner"],
diff --git a/core/tests/hdmitests/src/android/hardware/hdmi/HdmiDeviceInfoTest.java b/core/tests/hdmitests/src/android/hardware/hdmi/HdmiDeviceInfoTest.java
new file mode 100755
index 0000000..4c0de62
--- /dev/null
+++ b/core/tests/hdmitests/src/android/hardware/hdmi/HdmiDeviceInfoTest.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.hardware.hdmi;
+
+import androidx.test.filters.SmallTest;
+
+import com.google.common.testing.EqualsTester;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/** Tests for {@link HdmiDeviceInfo} */
+@RunWith(JUnit4.class)
+@SmallTest
+public class HdmiDeviceInfoTest {
+
+    @Test
+    public void testEquals() {
+        int logicalAddr = 0x00;
+        int phyAddr = 0x1000;
+        int portId = 1;
+        int deviceType = 0;
+        int vendorId = 0x123456;
+        String displayName = "test device";
+        int powerStatus = HdmiControlManager.POWER_STATUS_TRANSIENT_TO_STANDBY;
+        int deviceId = 3;
+        int adopterId = 2;
+
+        new EqualsTester()
+                .addEqualityGroup(new HdmiDeviceInfo())
+                .addEqualityGroup(
+                        new HdmiDeviceInfo(phyAddr, portId), new HdmiDeviceInfo(phyAddr, portId))
+                .addEqualityGroup(
+                        new HdmiDeviceInfo(phyAddr, portId, adopterId, deviceId),
+                        new HdmiDeviceInfo(phyAddr, portId, adopterId, deviceId))
+                .addEqualityGroup(
+                        new HdmiDeviceInfo(
+                                logicalAddr, phyAddr, portId, deviceType, vendorId, displayName),
+                        new HdmiDeviceInfo(
+                                logicalAddr, phyAddr, portId, deviceType, vendorId, displayName))
+                .addEqualityGroup(
+                        new HdmiDeviceInfo(
+                                logicalAddr,
+                                phyAddr,
+                                portId,
+                                deviceType,
+                                vendorId,
+                                displayName,
+                                powerStatus),
+                        new HdmiDeviceInfo(
+                                logicalAddr,
+                                phyAddr,
+                                portId,
+                                deviceType,
+                                vendorId,
+                                displayName,
+                                powerStatus))
+                .testEquals();
+    }
+}
diff --git a/core/tests/uwbtests/src/android/uwb/RangingParamsTest.java b/core/tests/uwbtests/src/android/uwb/RangingParamsTest.java
deleted file mode 100644
index 8095c99..0000000
--- a/core/tests/uwbtests/src/android/uwb/RangingParamsTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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.assertTrue;
-
-import android.os.Parcel;
-import android.os.PersistableBundle;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SmallTest;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.time.Duration;
-
-/**
- * Test of {@link RangingParams}.
- */
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public class RangingParamsTest {
-
-    @Test
-    public void testParams_Build() {
-        UwbAddress local = UwbAddress.fromBytes(new byte[] {(byte) 0xA0, (byte) 0x57});
-        UwbAddress remote = UwbAddress.fromBytes(new byte[] {(byte) 0x4D, (byte) 0x8C});
-        int channel = 9;
-        int rxPreamble = 16;
-        int txPreamble = 21;
-        boolean isController = true;
-        boolean isInitiator = false;
-        @RangingParams.StsPhyPacketType int stsPhyType = RangingParams.STS_PHY_PACKET_TYPE_SP2;
-        Duration samplePeriod = Duration.ofSeconds(1, 234);
-        PersistableBundle specParams = new PersistableBundle();
-        specParams.putString("protocol", "some_protocol");
-
-        RangingParams params = new RangingParams.Builder()
-                .setChannelNumber(channel)
-                .setReceivePreambleCodeIndex(rxPreamble)
-                .setTransmitPreambleCodeIndex(txPreamble)
-                .setLocalDeviceAddress(local)
-                .addRemoteDeviceAddress(remote)
-                .setIsController(isController)
-                .setIsInitiator(isInitiator)
-                .setSamplePeriod(samplePeriod)
-                .setStsPhPacketType(stsPhyType)
-                .setSpecificationParameters(specParams)
-                .build();
-
-        assertEquals(params.getLocalDeviceAddress(), local);
-        assertEquals(params.getRemoteDeviceAddresses().size(), 1);
-        assertEquals(params.getRemoteDeviceAddresses().get(0), remote);
-        assertEquals(params.getChannelNumber(), channel);
-        assertEquals(params.isController(), isController);
-        assertEquals(params.isInitiator(), isInitiator);
-        assertEquals(params.getRxPreambleIndex(), rxPreamble);
-        assertEquals(params.getTxPreambleIndex(), txPreamble);
-        assertEquals(params.getStsPhyPacketType(), stsPhyType);
-        assertEquals(params.getSamplingPeriod(), samplePeriod);
-        assertTrue(params.getSpecificationParameters().kindofEquals(specParams));
-    }
-
-    @Test
-    public void testParcel() {
-        Parcel parcel = Parcel.obtain();
-        RangingParams params = new RangingParams.Builder()
-                .setChannelNumber(9)
-                .setReceivePreambleCodeIndex(16)
-                .setTransmitPreambleCodeIndex(21)
-                .setLocalDeviceAddress(UwbTestUtils.getUwbAddress(false))
-                .addRemoteDeviceAddress(UwbTestUtils.getUwbAddress(true))
-                .setIsController(false)
-                .setIsInitiator(true)
-                .setSamplePeriod(Duration.ofSeconds(2))
-                .setStsPhPacketType(RangingParams.STS_PHY_PACKET_TYPE_SP1)
-                .build();
-        params.writeToParcel(parcel, 0);
-        parcel.setDataPosition(0);
-        RangingParams fromParcel = RangingParams.CREATOR.createFromParcel(parcel);
-        assertEquals(params, 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/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index 0806e71..ce6deeab 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -316,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"/>
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..a8efc23 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/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 2162b8a..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;
@@ -163,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();
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/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 9707260..3694d63 100644
--- a/keystore/java/android/security/keystore/AndroidKeyStoreSecretKeyFactorySpi.java
+++ b/keystore/java/android/security/keystore/AndroidKeyStoreSecretKeyFactorySpi.java
@@ -211,7 +211,11 @@
                 userAuthenticationValidWhileOnBody,
                 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/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/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/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/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/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/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 fa3815c..5a40ae1 100644
--- a/location/java/android/location/Location.java
+++ b/location/java/android/location/Location.java
@@ -127,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).
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/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 4a26e89..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 {
@@ -3512,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 {
@@ -3542,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);
@@ -4246,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 {
@@ -5146,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();
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 eff56f3..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
@@ -4010,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 610bffe..0ef4b94 100644
--- a/media/java/android/media/Image.java
+++ b/media/java/android/media/Image.java
@@ -200,6 +200,7 @@
      * @return The window transformation that needs to be applied for this frame.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract int getTransform();
 
     /**
@@ -207,6 +208,7 @@
      * @return The scaling mode that needs to be applied for this frame.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract int getScalingMode();
 
     /**
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 d02b496..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();
 
diff --git a/media/java/android/media/RingtoneManager.java b/media/java/android/media/RingtoneManager.java
index 9deeb8f..e2e13b0 100644
--- a/media/java/android/media/RingtoneManager.java
+++ b/media/java/android/media/RingtoneManager.java
@@ -36,6 +36,7 @@
 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;
@@ -585,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
@@ -728,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) {
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 4e451c6..221147d 100644
--- a/media/java/android/media/audiopolicy/AudioMix.java
+++ b/media/java/android/media/audiopolicy/AudioMix.java
@@ -23,6 +23,7 @@
 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;
@@ -34,24 +35,24 @@
 @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 f6f982a..de15313 100644
--- a/media/java/android/media/audiopolicy/AudioMixingRule.java
+++ b/media/java/android/media/audiopolicy/AudioMixingRule.java
@@ -20,6 +20,7 @@
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.media.AudioAttributes;
+import android.os.Build;
 import android.os.Parcel;
 import android.util.Log;
 
@@ -109,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 */
@@ -199,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/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/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/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/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/SettingsProvider/src/android/provider/settings/OWNERS b/packages/SettingsProvider/src/android/provider/settings/OWNERS
index 7e7710b..0f88811 100644
--- a/packages/SettingsProvider/src/android/provider/settings/OWNERS
+++ b/packages/SettingsProvider/src/android/provider/settings/OWNERS
@@ -1,4 +1,4 @@
 # Bug component: 656484
 
-include platform/frameworks/base/services/backup:/OWNERS
+include platform/frameworks/base:/services/backup/OWNERS
 
diff --git a/packages/SettingsProvider/test/src/android/provider/OWNERS b/packages/SettingsProvider/test/src/android/provider/OWNERS
index 7e7710b..0f88811 100644
--- a/packages/SettingsProvider/test/src/android/provider/OWNERS
+++ b/packages/SettingsProvider/test/src/android/provider/OWNERS
@@ -1,4 +1,4 @@
 # Bug component: 656484
 
-include platform/frameworks/base/services/backup:/OWNERS
+include platform/frameworks/base:/services/backup/OWNERS
 
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index a927997..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. -->
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/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/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/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
index ef51abb..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;
+        }
     }
 
     /**
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/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
index cf83603..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;
@@ -423,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/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/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/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/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 22423fe..e0a484f 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -41,6 +41,7 @@
 import static android.net.NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_FOREGROUND;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
@@ -139,7 +140,6 @@
 import android.net.util.LinkPropertiesUtils.CompareResult;
 import android.net.util.MultinetworkPolicyTracker;
 import android.net.util.NetdService;
-import android.os.BasicShellCommandHandler;
 import android.os.Binder;
 import android.os.Build;
 import android.os.Bundle;
@@ -171,7 +171,6 @@
 import android.util.LocalLog;
 import android.util.Log;
 import android.util.Pair;
-import android.util.Slog;
 import android.util.SparseArray;
 import android.util.SparseIntArray;
 import android.util.Xml;
@@ -192,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;
@@ -235,6 +235,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.ConcurrentModificationException;
 import java.util.HashMap;
@@ -1105,23 +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_REPLACED);
         intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
         intentFilter.addDataScheme("package");
-        mContext.registerReceiverAsUser(
+        userAllContext.registerReceiver(
                 mIntentReceiver,
-                UserHandle.ALL,
                 intentFilter,
                 null /* broadcastPermission */,
                 mHandler);
@@ -1129,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);
@@ -1913,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;
         }
@@ -1965,7 +1972,7 @@
     private void registerNetdEventCallback() {
         final IIpConnectivityMetrics ipConnectivityMetrics = mDeps.getIpConnectivityMetrics();
         if (ipConnectivityMetrics == null) {
-            Slog.wtf(TAG, "Missing IIpConnectivityMetrics");
+            Log.wtf(TAG, "Missing IIpConnectivityMetrics");
             return;
         }
 
@@ -2431,7 +2438,7 @@
             if (VDBG || DDBG) log("Setting MTU size: " + iface + ", " + mtu);
             mNetd.interfaceSetMtu(iface, mtu);
         } catch (RemoteException | ServiceSpecificException e) {
-            Slog.e(TAG, "exception in interfaceSetMtu()" + e);
+            loge("exception in interfaceSetMtu()" + e);
         }
     }
 
@@ -2453,7 +2460,7 @@
         if (tcpBufferSizes.equals(mCurrentTcpBufferSizes)) return;
 
         try {
-            if (VDBG || DDBG) Slog.d(TAG, "Setting tx/rx TCP buffers to " + tcpBufferSizes);
+            if (VDBG || DDBG) log("Setting tx/rx TCP buffers to " + tcpBufferSizes);
 
             String rmemValues = String.join(" ", values[0], values[1], values[2]);
             String wmemValues = String.join(" ", values[3], values[4], values[5]);
@@ -2690,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;
     }
 
@@ -2748,7 +2761,7 @@
                 case NetworkAgent.EVENT_NETWORK_CAPABILITIES_CHANGED: {
                     NetworkCapabilities networkCapabilities = (NetworkCapabilities) msg.obj;
                     if (networkCapabilities.hasConnectivityManagedCapability()) {
-                        Slog.wtf(TAG, "BUG: " + nai + " has CS-managed capability.");
+                        Log.wtf(TAG, "BUG: " + nai + " has CS-managed capability.");
                     }
                     if (networkCapabilities.hasTransport(TRANSPORT_TEST)) {
                         // Make sure the original object is not mutated. NetworkAgent normally
@@ -2758,6 +2771,7 @@
                         networkCapabilities = new NetworkCapabilities(networkCapabilities);
                         networkCapabilities.restrictCapabilitesForTestNetwork(nai.creatorUid);
                     }
+                    processCapabilitiesFromAgent(nai, networkCapabilities);
                     updateCapabilities(nai.getCurrentScore(), nai, networkCapabilities);
                     break;
                 }
@@ -2796,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();
+                    }
+                }
             }
         }
 
@@ -3027,7 +3066,7 @@
             // Legacy version of notifyNetworkTestedWithExtras.
             // Would only be called if the system has a NetworkStack module older than the
             // framework, which does not happen in practice.
-            Slog.wtf(TAG, "Deprecated notifyNetworkTested called: no action taken");
+            Log.wtf(TAG, "Deprecated notifyNetworkTested called: no action taken");
         }
 
         @Override
@@ -3381,7 +3420,7 @@
         }
         mLegacyTypeTracker.remove(nai, wasDefault);
         if (!nai.networkCapabilities.hasTransport(TRANSPORT_VPN)) {
-            updateAllVpnsCapabilities();
+            propagateUnderlyingNetworkCapabilities();
         }
         rematchAllNetworksAndRequests();
         mLingerMonitor.noteDisconnect(nai);
@@ -3504,7 +3543,7 @@
                 numRequests = nai.numForegroundNetworkRequests();
                 break;
             default:
-                Slog.wtf(TAG, "Invalid reason. Cannot happen.");
+                Log.wtf(TAG, "Invalid reason. Cannot happen.");
                 return true;
         }
 
@@ -3666,7 +3705,7 @@
         synchronized (mUidToNetworkRequestCount) {
             final int requests = mUidToNetworkRequestCount.get(nri.mUid, 0);
             if (requests < 1) {
-                Slog.wtf(TAG, "BUG: too small request count " + requests + " for UID " + nri.mUid);
+                Log.wtf(TAG, "BUG: too small request count " + requests + " for UID " + nri.mUid);
             } else if (requests == 1) {
                 mUidToNetworkRequestCount.removeAt(mUidToNetworkRequestCount.indexOfKey(nri.mUid));
             } else {
@@ -3711,7 +3750,7 @@
         }
 
         if (!nai.networkAgentConfig.explicitlySelected) {
-            Slog.wtf(TAG, "BUG: setAcceptUnvalidated non non-explicitly selected network");
+            Log.wtf(TAG, "BUG: setAcceptUnvalidated non non-explicitly selected network");
         }
 
         if (accept != nai.networkAgentConfig.acceptUnvalidated) {
@@ -3981,7 +4020,7 @@
                 highPriority = nai.networkAgentConfig.explicitlySelected;
                 break;
             default:
-                Slog.wtf(TAG, "Unknown notification type " + type);
+                Log.wtf(TAG, "Unknown notification type " + type);
                 return;
         }
 
@@ -4303,7 +4342,7 @@
         synchronized (this) {
             if (!mNetTransitionWakeLock.isHeld()) {
                 mWakelockLogs.log(String.format("RELEASE: already released (%s)", event));
-                Slog.w(TAG, "expected Net Transition WakeLock to be held");
+                Log.w(TAG, "expected Net Transition WakeLock to be held");
                 return;
             }
             mNetTransitionWakeLock.release();
@@ -4475,7 +4514,7 @@
 
         @Override
         public void onChange(boolean selfChange) {
-            Slog.wtf(TAG, "Should never be reached.");
+            Log.wtf(TAG, "Should never be reached.");
         }
 
         @Override
@@ -4490,15 +4529,19 @@
     }
 
     private static void log(String s) {
-        Slog.d(TAG, s);
+        Log.d(TAG, s);
+    }
+
+    private static void logw(String s) {
+        Log.w(TAG, s);
     }
 
     private static void loge(String s) {
-        Slog.e(TAG, s);
+        Log.e(TAG, s);
     }
 
     private static void loge(String s, Throwable t) {
-        Slog.e(TAG, s, t);
+        Log.e(TAG, s, t);
     }
 
     /**
@@ -4691,10 +4734,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);
                 }
@@ -4707,13 +4749,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) {
@@ -4722,23 +4761,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;
     }
 
     /**
@@ -4761,39 +4810,25 @@
     }
 
     /**
-     * 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) {
-            Slog.w(TAG, "Lockdown VPN only available to AID_SYSTEM");
+            logw("Lockdown VPN only available to AID_SYSTEM");
             return false;
         }
 
@@ -4803,21 +4838,21 @@
             if (mLockdownEnabled) {
                 byte[] profileTag = mKeyStore.get(Credentials.LOCKDOWN_VPN);
                 if (profileTag == null) {
-                    Slog.e(TAG, "Lockdown VPN configured but cannot be read from keystore");
+                    loge("Lockdown VPN configured but cannot be read from keystore");
                     return false;
                 }
                 String profileName = new String(profileTag);
                 final VpnProfile profile = VpnProfile.decode(
                         profileName, mKeyStore.get(Credentials.VPN + profileName));
                 if (profile == null) {
-                    Slog.e(TAG, "Lockdown VPN configured invalid profile " + profileName);
+                    loge("Lockdown VPN configured invalid profile " + profileName);
                     setLockdownTracker(null);
                     return true;
                 }
                 int user = UserHandle.getUserId(Binder.getCallingUid());
                 Vpn vpn = mVpns.get(user);
                 if (vpn == null) {
-                    Slog.w(TAG, "VPN for user " + user + " not ready yet. Skipping lockdown");
+                    logw("VPN for user " + user + " not ready yet. Skipping lockdown");
                     return false;
                 }
                 setLockdownTracker(new LockdownVpnTracker(mContext, this, mHandler, vpn, profile));
@@ -4877,7 +4912,7 @@
             if (vpn == null) {
                 // Shouldn't happen as all code paths that point here should have checked the Vpn
                 // exists already.
-                Slog.wtf(TAG, "User " + userId + " has no Vpn configuration");
+                Log.wtf(TAG, "User " + userId + " has no Vpn configuration");
                 return false;
             }
 
@@ -4893,7 +4928,7 @@
         synchronized (mVpns) {
             Vpn vpn = mVpns.get(userId);
             if (vpn == null) {
-                Slog.w(TAG, "User " + userId + " has no Vpn configuration");
+                logw("User " + userId + " has no Vpn configuration");
                 return false;
             }
             return vpn.isAlwaysOnPackageSupported(packageName, mKeyStore);
@@ -4914,7 +4949,7 @@
 
             Vpn vpn = mVpns.get(userId);
             if (vpn == null) {
-                Slog.w(TAG, "User " + userId + " has no Vpn configuration");
+                logw("User " + userId + " has no Vpn configuration");
                 return false;
             }
             if (!vpn.setAlwaysOnPackage(packageName, lockdown, lockdownWhitelist, mKeyStore)) {
@@ -4936,7 +4971,7 @@
         synchronized (mVpns) {
             Vpn vpn = mVpns.get(userId);
             if (vpn == null) {
-                Slog.w(TAG, "User " + userId + " has no Vpn configuration");
+                logw("User " + userId + " has no Vpn configuration");
                 return null;
             }
             return vpn.getAlwaysOnPackage();
@@ -4951,7 +4986,7 @@
         synchronized (mVpns) {
             Vpn vpn = mVpns.get(userId);
             if (vpn == null) {
-                Slog.w(TAG, "User " + userId + " has no Vpn configuration");
+                logw("User " + userId + " has no Vpn configuration");
                 return false;
             }
             return vpn.getLockdown();
@@ -4966,7 +5001,7 @@
         synchronized (mVpns) {
             Vpn vpn = mVpns.get(userId);
             if (vpn == null) {
-                Slog.w(TAG, "User " + userId + " has no Vpn configuration");
+                logw("User " + userId + " has no Vpn configuration");
                 return null;
             }
             return vpn.getLockdownAllowlist();
@@ -5100,7 +5135,7 @@
         }
     }
 
-    private void onUserStart(int userId) {
+    private void onUserStarted(int userId) {
         synchronized (mVpns) {
             Vpn userVpn = mVpns.get(userId);
             if (userVpn != null) {
@@ -5115,7 +5150,7 @@
         }
     }
 
-    private void onUserStop(int userId) {
+    private void onUserStopped(int userId) {
         synchronized (mVpns) {
             Vpn userVpn = mVpns.get(userId);
             if (userVpn == null) {
@@ -5129,35 +5164,29 @@
 
     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);
             }
         }
     }
 
     private void onPackageReplaced(String packageName, int uid) {
         if (TextUtils.isEmpty(packageName) || uid < 0) {
-            Slog.wtf(TAG, "Invalid package in onPackageReplaced: " + packageName + " | " + uid);
+            Log.wtf(TAG, "Invalid package in onPackageReplaced: " + packageName + " | " + uid);
             return;
         }
         final int userId = UserHandle.getUserId(uid);
@@ -5168,7 +5197,7 @@
             }
             // Legacy always-on VPN won't be affected since the package name is not set.
             if (TextUtils.equals(vpn.getAlwaysOnPackage(), packageName)) {
-                Slog.d(TAG, "Restarting always-on VPN package " + packageName + " for user "
+                log("Restarting always-on VPN package " + packageName + " for user "
                         + userId);
                 vpn.startAlwaysOnVpn(mKeyStore);
             }
@@ -5177,7 +5206,7 @@
 
     private void onPackageRemoved(String packageName, int uid, boolean isReplacing) {
         if (TextUtils.isEmpty(packageName) || uid < 0) {
-            Slog.wtf(TAG, "Invalid package in onPackageRemoved: " + packageName + " | " + uid);
+            Log.wtf(TAG, "Invalid package in onPackageRemoved: " + packageName + " | " + uid);
             return;
         }
 
@@ -5189,7 +5218,7 @@
             }
             // Legacy always-on VPN won't be affected since the package name is not set.
             if (TextUtils.equals(vpn.getAlwaysOnPackage(), packageName) && !isReplacing) {
-                Slog.d(TAG, "Removing always-on VPN package " + packageName + " for user "
+                log("Removing always-on VPN package " + packageName + " for user "
                         + userId);
                 vpn.setAlwaysOnPackage(null, false, null, mKeyStore);
             }
@@ -5232,9 +5261,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)) {
@@ -5259,7 +5288,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);
         }
     };
 
@@ -5341,6 +5372,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(
@@ -5352,8 +5389,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.
@@ -5368,7 +5408,8 @@
 
         NetworkRequestInfo(NetworkRequest r, PendingIntent pi) {
             request = r;
-            ensureNetworkRequestHasType(request);
+            mRequests = initializeRequests(r);
+            ensureAllNetworkRequestsHaveType(mRequests);
             mPendingIntent = pi;
             messenger = null;
             mBinder = null;
@@ -5381,7 +5422,8 @@
             super();
             messenger = m;
             request = r;
-            ensureNetworkRequestHasType(request);
+            mRequests = initializeRequests(r);
+            ensureAllNetworkRequestsHaveType(mRequests);
             mBinder = binder;
             mPid = getCallingPid();
             mUid = getCallingUid();
@@ -5399,6 +5441,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;
@@ -5416,14 +5478,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);
         }
     }
@@ -5743,6 +5807,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);
@@ -5764,7 +5834,7 @@
             // Avoid creating duplicates. even if an app makes a direct AIDL call.
             // This will never happen if an app calls ConnectivityManager#registerNetworkProvider,
             // as that will throw if a duplicate provider is registered.
-            Slog.e(TAG, "Attempt to register existing NetworkProviderInfo "
+            loge("Attempt to register existing NetworkProviderInfo "
                     + mNetworkProviderInfos.get(npi.messenger).name);
             return;
         }
@@ -5834,7 +5904,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.
@@ -5906,13 +5975,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);
@@ -5923,9 +6008,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);
 
@@ -5933,13 +6019,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
@@ -5966,6 +6047,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());
@@ -6262,6 +6349,83 @@
     }
 
     /**
+     * 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);
+    }
+
+    /** Modifies |caps| based on the capabilities of the specified underlying networks. */
+    @VisibleForTesting
+    void applyUnderlyingCapabilities(@Nullable Network[] underlyingNetworks,
+            @NonNull NetworkCapabilities caps,  boolean declaredMetered) {
+        final Network defaultNetwork = getNetwork(getDefaultNetwork());
+        if (underlyingNetworks == null && defaultNetwork != null) {
+            // null underlying networks means to track the default.
+            underlyingNetworks = new Network[] { defaultNetwork };
+        }
+        int[] transportTypes = new int[] { NetworkCapabilities.TRANSPORT_VPN };
+        int downKbps = NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
+        int upKbps = NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
+        boolean metered = declaredMetered; // metered if any underlying is metered, or agentMetered
+        boolean roaming = false; // roaming if any underlying is roaming
+        boolean congested = false; // congested if any underlying is congested
+        boolean suspended = true; // suspended if all underlying are suspended
+
+        boolean hadUnderlyingNetworks = false;
+        if (null != underlyingNetworks) {
+            for (Network underlyingNetwork : underlyingNetworks) {
+                final NetworkAgentInfo underlying =
+                        getNetworkAgentInfoForNetwork(underlyingNetwork);
+                if (underlying == null) continue;
+
+                final NetworkCapabilities underlyingCaps = underlying.networkCapabilities;
+                hadUnderlyingNetworks = true;
+                for (int underlyingType : underlyingCaps.getTransportTypes()) {
+                    transportTypes = ArrayUtils.appendInt(transportTypes, underlyingType);
+                }
+
+                // Merge capabilities of this underlying network. For bandwidth, assume the
+                // worst case.
+                downKbps = NetworkCapabilities.minBandwidth(downKbps,
+                        underlyingCaps.getLinkDownstreamBandwidthKbps());
+                upKbps = NetworkCapabilities.minBandwidth(upKbps,
+                        underlyingCaps.getLinkUpstreamBandwidthKbps());
+                // If this underlying network is metered, the VPN is metered (it may cost money
+                // to send packets on this network).
+                metered |= !underlyingCaps.hasCapability(NET_CAPABILITY_NOT_METERED);
+                // If this underlying network is roaming, the VPN is roaming (the billing structure
+                // is different than the usual, local one).
+                roaming |= !underlyingCaps.hasCapability(NET_CAPABILITY_NOT_ROAMING);
+                // If this underlying network is congested, the VPN is congested (the current
+                // condition of the network affects the performance of this network).
+                congested |= !underlyingCaps.hasCapability(NET_CAPABILITY_NOT_CONGESTED);
+                // If this network is not suspended, the VPN is not suspended (the VPN
+                // is able to transfer some data).
+                suspended &= !underlyingCaps.hasCapability(NET_CAPABILITY_NOT_SUSPENDED);
+            }
+        }
+        if (!hadUnderlyingNetworks) {
+            // No idea what the underlying networks are; assume reasonable defaults
+            metered = true;
+            roaming = false;
+            congested = false;
+            suspended = false;
+        }
+
+        caps.setTransportTypes(transportTypes);
+        caps.setLinkDownstreamBandwidthKbps(downKbps);
+        caps.setLinkUpstreamBandwidthKbps(upKbps);
+        caps.setCapability(NET_CAPABILITY_NOT_METERED, !metered);
+        caps.setCapability(NET_CAPABILITY_NOT_ROAMING, !roaming);
+        caps.setCapability(NET_CAPABILITY_NOT_CONGESTED, !congested);
+        caps.setCapability(NET_CAPABILITY_NOT_SUSPENDED, !suspended);
+    }
+
+    /**
      * 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).
@@ -6280,7 +6444,7 @@
             // stop being matched by the updated agent.
             String diff = nai.networkCapabilities.describeImmutableDifferences(nc);
             if (!TextUtils.isEmpty(diff)) {
-                Slog.wtf(TAG, "BUG: " + nai + " lost immutable capabilities:" + diff);
+                Log.wtf(TAG, "BUG: " + nai + " lost immutable capabilities:" + diff);
             }
         }
 
@@ -6314,6 +6478,10 @@
             newNc.addCapability(NET_CAPABILITY_NOT_ROAMING);
         }
 
+        if (nai.supportsUnderlyingNetworks()) {
+            applyUnderlyingCapabilities(nai.declaredUnderlyingNetworks, newNc, nai.declaredMetered);
+        }
+
         return newNc;
     }
 
@@ -6393,7 +6561,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)) {
@@ -6426,8 +6594,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,
@@ -6713,7 +6881,7 @@
                 ? newNetwork.linkProperties.getTcpBufferSizes() : null);
         notifyIfacesChangedForNetworkStats();
         // Fix up the NetworkCapabilities of any VPNs that don't specify underlying networks.
-        updateAllVpnsCapabilities();
+        propagateUnderlyingNetworkCapabilities();
     }
 
     private void processListenRequests(@NonNull final NetworkAgentInfo nai) {
@@ -6760,7 +6928,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");
             }
@@ -6836,7 +7004,7 @@
             }
             newSatisfier.unlingerRequest(nri.request);
             if (!newSatisfier.addRequest(nri.request)) {
-                Slog.wtf(TAG, "BUG: " + newSatisfier.toShortString() + " already has "
+                Log.wtf(TAG, "BUG: " + newSatisfier.toShortString() + " already has "
                         + nri.request);
             }
         } else {
@@ -7175,7 +7343,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;
         }
@@ -7184,7 +7352,7 @@
             networkAgent.everConnected = true;
 
             if (networkAgent.linkProperties == null) {
-                Slog.wtf(TAG, networkAgent.toShortString() + " connected with null LinkProperties");
+                Log.wtf(TAG, networkAgent.toShortString() + " connected with null LinkProperties");
             }
 
             // NetworkCapabilities need to be set before sending the private DNS config to
@@ -7217,8 +7385,8 @@
             // doing.
             updateSignalStrengthThresholds(networkAgent, "CONNECT", null);
 
-            if (networkAgent.isVPN()) {
-                updateAllVpnsCapabilities();
+            if (networkAgent.supportsUnderlyingNetworks()) {
+                propagateUnderlyingNetworkCapabilities();
             }
 
             // Consider network even though it is not yet validated.
@@ -7475,13 +7643,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;
     }
 
@@ -8157,13 +8318,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/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index 1c99465..821a967 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -24,12 +24,14 @@
 import static android.net.INetd.FIREWALL_CHAIN_DOZABLE;
 import static android.net.INetd.FIREWALL_CHAIN_NONE;
 import static android.net.INetd.FIREWALL_CHAIN_POWERSAVE;
+import static android.net.INetd.FIREWALL_CHAIN_RESTRICTED;
 import static android.net.INetd.FIREWALL_CHAIN_STANDBY;
 import static android.net.INetd.FIREWALL_DENYLIST;
 import static android.net.INetd.FIREWALL_RULE_ALLOW;
 import static android.net.INetd.FIREWALL_RULE_DENY;
 import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_DOZABLE;
 import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_POWERSAVE;
+import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_RESTRICTED;
 import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_STANDBY;
 import static android.net.NetworkPolicyManager.FIREWALL_RULE_DEFAULT;
 import static android.net.NetworkStats.SET_DEFAULT;
@@ -88,7 +90,6 @@
 import android.util.SparseIntArray;
 
 import com.android.internal.annotations.GuardedBy;
-import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.app.IBatteryStats;
 import com.android.internal.util.DumpUtils;
 import com.android.internal.util.FrameworkStatsLog;
@@ -122,7 +123,7 @@
      * Helper class that encapsulates NetworkManagementService dependencies and makes them
      * easier to mock in unit tests.
      */
-    static class SystemServices {
+    static class Dependencies {
         public IBinder getService(String name) {
             return ServiceManager.getService(name);
         }
@@ -132,6 +133,10 @@
         public INetd getNetd() {
             return NetdService.get();
         }
+
+        public int getCallingUid() {
+            return Binder.getCallingUid();
+        }
     }
 
     private static final String TAG = "NetworkManagement";
@@ -157,7 +162,7 @@
 
     private final Handler mDaemonHandler;
 
-    private final SystemServices mServices;
+    private final Dependencies mDeps;
 
     private INetd mNetdService;
 
@@ -215,6 +220,11 @@
      */
     @GuardedBy("mRulesLock")
     private SparseIntArray mUidFirewallPowerSaveRules = new SparseIntArray();
+    /**
+     * Contains the per-UID firewall rules that are used when Restricted Networking Mode is enabled.
+     */
+    @GuardedBy("mRulesLock")
+    private SparseIntArray mUidFirewallRestrictedRules = new SparseIntArray();
     /** Set of states for the child firewall chains. True if the chain is active. */
     @GuardedBy("mRulesLock")
     final SparseBooleanArray mFirewallChainStates = new SparseBooleanArray();
@@ -254,33 +264,32 @@
      * @param context  Binder context for this service
      */
     private NetworkManagementService(
-            Context context, SystemServices services) {
+            Context context, Dependencies deps) {
         mContext = context;
-        mServices = services;
+        mDeps = deps;
 
         mDaemonHandler = new Handler(FgThread.get().getLooper());
 
         mNetdUnsolicitedEventListener = new NetdUnsolicitedEventListener();
 
-        mServices.registerLocalService(new LocalService());
+        mDeps.registerLocalService(new LocalService());
 
         synchronized (mTetheringStatsProviders) {
             mTetheringStatsProviders.put(new NetdTetheringStatsProvider(), "netd");
         }
     }
 
-    @VisibleForTesting
-    NetworkManagementService() {
+    private NetworkManagementService() {
         mContext = null;
         mDaemonHandler = null;
-        mServices = null;
+        mDeps = null;
         mNetdUnsolicitedEventListener = null;
     }
 
-    static NetworkManagementService create(Context context, SystemServices services)
+    static NetworkManagementService create(Context context, Dependencies deps)
             throws InterruptedException {
         final NetworkManagementService service =
-                new NetworkManagementService(context, services);
+                new NetworkManagementService(context, deps);
         if (DBG) Slog.d(TAG, "Creating NetworkManagementService");
         if (DBG) Slog.d(TAG, "Connecting native netd service");
         service.connectNativeNetdService();
@@ -289,7 +298,7 @@
     }
 
     public static NetworkManagementService create(Context context) throws InterruptedException {
-        return create(context, new SystemServices());
+        return create(context, new Dependencies());
     }
 
     public void systemReady() {
@@ -310,7 +319,7 @@
                 return mBatteryStats;
             }
             mBatteryStats =
-                    IBatteryStats.Stub.asInterface(mServices.getService(BatteryStats.SERVICE_NAME));
+                    IBatteryStats.Stub.asInterface(mDeps.getService(BatteryStats.SERVICE_NAME));
             return mBatteryStats;
         }
     }
@@ -511,7 +520,7 @@
     }
 
     private void connectNativeNetdService() {
-        mNetdService = mServices.getNetd();
+        mNetdService = mDeps.getNetd();
         try {
             mNetdService.registerUnsolicitedEventListener(mNetdUnsolicitedEventListener);
             if (DBG) Slog.d(TAG, "Register unsolicited event listener");
@@ -602,9 +611,15 @@
             syncFirewallChainLocked(FIREWALL_CHAIN_STANDBY, "standby ");
             syncFirewallChainLocked(FIREWALL_CHAIN_DOZABLE, "dozable ");
             syncFirewallChainLocked(FIREWALL_CHAIN_POWERSAVE, "powersave ");
+            syncFirewallChainLocked(FIREWALL_CHAIN_RESTRICTED, "restricted ");
 
-            final int[] chains =
-                    {FIREWALL_CHAIN_STANDBY, FIREWALL_CHAIN_DOZABLE, FIREWALL_CHAIN_POWERSAVE};
+            final int[] chains = {
+                    FIREWALL_CHAIN_STANDBY,
+                    FIREWALL_CHAIN_DOZABLE,
+                    FIREWALL_CHAIN_POWERSAVE,
+                    FIREWALL_CHAIN_RESTRICTED
+            };
+
             for (int chain : chains) {
                 if (getFirewallChainState(chain)) {
                     setFirewallChainEnabled(chain, true);
@@ -1437,7 +1452,7 @@
 
     @Override
     public void setUidCleartextNetworkPolicy(int uid, int policy) {
-        if (Binder.getCallingUid() != uid) {
+        if (mDeps.getCallingUid() != uid) {
             NetworkStack.checkNetworkStackPermission(mContext);
         }
 
@@ -1695,6 +1710,8 @@
                 return FIREWALL_CHAIN_NAME_DOZABLE;
             case FIREWALL_CHAIN_POWERSAVE:
                 return FIREWALL_CHAIN_NAME_POWERSAVE;
+            case FIREWALL_CHAIN_RESTRICTED:
+                return FIREWALL_CHAIN_NAME_RESTRICTED;
             default:
                 throw new IllegalArgumentException("Bad child chain: " + chain);
         }
@@ -1708,6 +1725,8 @@
                 return FIREWALL_ALLOWLIST;
             case FIREWALL_CHAIN_POWERSAVE:
                 return FIREWALL_ALLOWLIST;
+            case FIREWALL_CHAIN_RESTRICTED:
+                return FIREWALL_ALLOWLIST;
             default:
                 return isFirewallEnabled() ? FIREWALL_ALLOWLIST : FIREWALL_DENYLIST;
         }
@@ -1752,6 +1771,9 @@
                     case FIREWALL_CHAIN_POWERSAVE:
                         mNetdService.firewallReplaceUidChain("fw_powersave", true, uids);
                         break;
+                    case FIREWALL_CHAIN_RESTRICTED:
+                        mNetdService.firewallReplaceUidChain("fw_restricted", true, uids);
+                        break;
                     case FIREWALL_CHAIN_NONE:
                     default:
                         Slog.d(TAG, "setFirewallUidRules() called on invalid chain: " + chain);
@@ -1836,6 +1858,8 @@
                 return mUidFirewallDozableRules;
             case FIREWALL_CHAIN_POWERSAVE:
                 return mUidFirewallPowerSaveRules;
+            case FIREWALL_CHAIN_RESTRICTED:
+                return mUidFirewallRestrictedRules;
             case FIREWALL_CHAIN_NONE:
                 return mUidFirewallRules;
             default:
@@ -1851,8 +1875,8 @@
         return rule;
     }
 
-    private static void enforceSystemUid() {
-        final int uid = Binder.getCallingUid();
+    private void enforceSystemUid() {
+        final int uid = mDeps.getCallingUid();
         if (uid != Process.SYSTEM_UID) {
             throw new SecurityException("Only available to AID_SYSTEM");
         }
@@ -1910,17 +1934,22 @@
         synchronized (mRulesLock) {
             dumpUidFirewallRule(pw, "", mUidFirewallRules);
 
-            pw.print("UID firewall standby chain enabled: "); pw.println(
-                    getFirewallChainState(FIREWALL_CHAIN_STANDBY));
+            pw.print("UID firewall standby chain enabled: ");
+            pw.println(getFirewallChainState(FIREWALL_CHAIN_STANDBY));
             dumpUidFirewallRule(pw, FIREWALL_CHAIN_NAME_STANDBY, mUidFirewallStandbyRules);
 
-            pw.print("UID firewall dozable chain enabled: "); pw.println(
-                    getFirewallChainState(FIREWALL_CHAIN_DOZABLE));
+            pw.print("UID firewall dozable chain enabled: ");
+            pw.println(getFirewallChainState(FIREWALL_CHAIN_DOZABLE));
             dumpUidFirewallRule(pw, FIREWALL_CHAIN_NAME_DOZABLE, mUidFirewallDozableRules);
 
-            pw.println("UID firewall powersave chain enabled: " +
-                    getFirewallChainState(FIREWALL_CHAIN_POWERSAVE));
+            pw.print("UID firewall powersave chain enabled: ");
+            pw.println(getFirewallChainState(FIREWALL_CHAIN_POWERSAVE));
             dumpUidFirewallRule(pw, FIREWALL_CHAIN_NAME_POWERSAVE, mUidFirewallPowerSaveRules);
+
+            pw.print("UID firewall restricted mode chain enabled: ");
+            pw.println(getFirewallChainState(FIREWALL_CHAIN_RESTRICTED));
+            dumpUidFirewallRule(pw, FIREWALL_CHAIN_NAME_RESTRICTED,
+                    mUidFirewallRestrictedRules);
         }
 
         synchronized (mIdleTimerLock) {
@@ -2071,6 +2100,11 @@
                 if (DBG) Slog.d(TAG, "Uid " + uid + " restricted because of power saver mode");
                 return true;
             }
+            if (getFirewallChainState(FIREWALL_CHAIN_RESTRICTED)
+                    && mUidFirewallRestrictedRules.get(uid) != FIREWALL_RULE_ALLOW) {
+                if (DBG) Slog.d(TAG, "Uid " + uid + " restricted because of restricted mode");
+                return true;
+            }
             if (mUidRejectOnMetered.get(uid)) {
                 if (DBG) Slog.d(TAG, "Uid " + uid + " restricted because of no metered data"
                         + " in the background");
@@ -2096,60 +2130,10 @@
         }
     }
 
-    @VisibleForTesting
-    class LocalService extends NetworkManagementInternal {
+    private class LocalService extends NetworkManagementInternal {
         @Override
         public boolean isNetworkRestrictedForUid(int uid) {
             return isNetworkRestrictedInternal(uid);
         }
     }
-
-    @VisibleForTesting
-    Injector getInjector() {
-        return new Injector();
-    }
-
-    @VisibleForTesting
-    class Injector {
-        void setDataSaverMode(boolean dataSaverMode) {
-            mDataSaverMode = dataSaverMode;
-        }
-
-        void setFirewallChainState(int chain, boolean state) {
-            NetworkManagementService.this.setFirewallChainState(chain, state);
-        }
-
-        void setFirewallRule(int chain, int uid, int rule) {
-            synchronized (mRulesLock) {
-                getUidFirewallRulesLR(chain).put(uid, rule);
-            }
-        }
-
-        void setUidOnMeteredNetworkList(boolean denylist, int uid, boolean enable) {
-            synchronized (mRulesLock) {
-                if (denylist) {
-                    mUidRejectOnMetered.put(uid, enable);
-                } else {
-                    mUidAllowOnMetered.put(uid, enable);
-                }
-            }
-        }
-
-        void reset() {
-            synchronized (mRulesLock) {
-                setDataSaverMode(false);
-                final int[] chains = {
-                        FIREWALL_CHAIN_DOZABLE,
-                        FIREWALL_CHAIN_STANDBY,
-                        FIREWALL_CHAIN_POWERSAVE
-                };
-                for (int chain : chains) {
-                    setFirewallChainState(chain, false);
-                    getUidFirewallRulesLR(chain).clear();
-                }
-                mUidAllowOnMetered.clear();
-                mUidRejectOnMetered.clear();
-            }
-        }
-    }
 }
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/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/TestNetworkService.java b/services/core/java/com/android/server/TestNetworkService.java
index d6bd5a1..a45466d 100644
--- a/services/core/java/com/android/server/TestNetworkService.java
+++ b/services/core/java/com/android/server/TestNetworkService.java
@@ -29,9 +29,9 @@
 import android.net.LinkAddress;
 import android.net.LinkProperties;
 import android.net.NetworkAgent;
+import android.net.NetworkAgentConfig;
 import android.net.NetworkCapabilities;
-import android.net.NetworkInfo;
-import android.net.NetworkInfo.DetailedState;
+import android.net.NetworkProvider;
 import android.net.RouteInfo;
 import android.net.StringNetworkSpecifier;
 import android.net.TestNetworkInterface;
@@ -62,7 +62,8 @@
 /** @hide */
 class TestNetworkService extends ITestNetworkManager.Stub {
     @NonNull private static final String TAG = TestNetworkService.class.getSimpleName();
-    @NonNull private static final String TEST_NETWORK_TYPE = "TEST_NETWORK";
+    @NonNull private static final String TEST_NETWORK_LOGTAG = "TestNetworkAgent";
+    @NonNull private static final String TEST_NETWORK_PROVIDER_NAME = TAG;
     @NonNull private static final AtomicInteger sTestTunIndex = new AtomicInteger();
 
     @NonNull private final Context mContext;
@@ -72,6 +73,9 @@
     @NonNull private final HandlerThread mHandlerThread;
     @NonNull private final Handler mHandler;
 
+    @NonNull private final ConnectivityManager mCm;
+    @NonNull private final NetworkProvider mNetworkProvider;
+
     // Native method stubs
     private static native int jniCreateTunTap(boolean isTun, @NonNull String iface);
 
@@ -85,6 +89,10 @@
         mContext = Objects.requireNonNull(context, "missing Context");
         mNMS = Objects.requireNonNull(netManager, "missing INetworkManagementService");
         mNetd = Objects.requireNonNull(NetdService.getInstance(), "could not get netd instance");
+        mCm = mContext.getSystemService(ConnectivityManager.class);
+        mNetworkProvider = new NetworkProvider(mContext, mHandler.getLooper(),
+                TEST_NETWORK_PROVIDER_NAME);
+        mCm.registerNetworkProvider(mNetworkProvider);
     }
 
     /**
@@ -150,9 +158,6 @@
         private static final int NETWORK_SCORE = 1; // Use a low, non-zero score.
 
         private final int mUid;
-        @NonNull private final NetworkInfo mNi;
-        @NonNull private final NetworkCapabilities mNc;
-        @NonNull private final LinkProperties mLp;
 
         @GuardedBy("mBinderLock")
         @NonNull
@@ -161,20 +166,18 @@
         @NonNull private final Object mBinderLock = new Object();
 
         private TestNetworkAgent(
-                @NonNull Looper looper,
                 @NonNull Context context,
-                @NonNull NetworkInfo ni,
+                @NonNull Looper looper,
+                @NonNull NetworkAgentConfig config,
                 @NonNull NetworkCapabilities nc,
                 @NonNull LinkProperties lp,
                 int uid,
-                @NonNull IBinder binder)
+                @NonNull IBinder binder,
+                @NonNull NetworkProvider np)
                 throws RemoteException {
-            super(looper, context, TEST_NETWORK_TYPE, ni, nc, lp, NETWORK_SCORE);
+            super(context, looper, TEST_NETWORK_LOGTAG, nc, lp, NETWORK_SCORE, config, np);
 
             mUid = uid;
-            mNi = ni;
-            mNc = nc;
-            mLp = lp;
 
             synchronized (mBinderLock) {
                 mBinder = binder; // Binder null-checks in create()
@@ -203,9 +206,7 @@
         }
 
         private void teardown() {
-            mNi.setDetailedState(DetailedState.DISCONNECTED, null, null);
-            mNi.setIsAvailable(false);
-            sendNetworkInfo(mNi);
+            unregister();
 
             // Synchronize on mBinderLock to ensure that unlinkToDeath is never called more than
             // once (otherwise it could throw an exception)
@@ -238,11 +239,6 @@
         Objects.requireNonNull(context, "missing Context");
         // iface and binder validity checked by caller
 
-        // Build network info with special testing type
-        NetworkInfo ni = new NetworkInfo(ConnectivityManager.TYPE_TEST, 0, TEST_NETWORK_TYPE, "");
-        ni.setDetailedState(DetailedState.CONNECTED, null, null);
-        ni.setIsAvailable(true);
-
         // Build narrow set of NetworkCapabilities, useful only for testing
         NetworkCapabilities nc = new NetworkCapabilities();
         nc.clearAll(); // Remove default capabilities.
@@ -290,7 +286,12 @@
             lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), null, iface));
         }
 
-        return new TestNetworkAgent(looper, context, ni, nc, lp, callingUid, binder);
+        final TestNetworkAgent agent = new TestNetworkAgent(context, looper,
+                new NetworkAgentConfig.Builder().build(), nc, lp, callingUid, binder,
+                mNetworkProvider);
+        agent.register();
+        agent.markConnected();
+        return agent;
     }
 
     /**
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
index db7e16c..165b6a1 100644
--- a/services/core/java/com/android/server/VcnManagementService.java
+++ b/services/core/java/com/android/server/VcnManagementService.java
@@ -20,7 +20,17 @@
 
 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.
@@ -86,9 +96,16 @@
     @NonNull private final Context mContext;
     @NonNull private final Dependencies mDeps;
 
-    private VcnManagementService(@NonNull Context context, @NonNull Dependencies deps) {
+    @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.
@@ -96,8 +113,71 @@
         return new VcnManagementService(context, new Dependencies());
     }
 
-    private static class Dependencies {}
+    /** External dependencies used by VcnManagementService, for injection in tests */
+    @VisibleForTesting(visibility = Visibility.PRIVATE)
+    public static class Dependencies {
+        private HandlerThread mHandlerThread;
 
-    /** Notifies the VcnManagementService that external dependencies can be set up */
-    public void systemReady() {}
+        /** 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 0ee30f9..9340be1 100644
--- a/services/core/java/com/android/server/VibratorService.java
+++ b/services/core/java/com/android/server/VibratorService.java
@@ -1662,6 +1662,10 @@
                                     // Vibrator is already ON, so just change its amplitude.
                                     doVibratorSetAmplitude(amplitude);
                                 }
+                            } else {
+                                // Previous vibration should have already finished, but we make sure
+                                // the vibrator will be off for the next step when amplitude is 0.
+                                doVibratorOff();
                             }
 
                             // We wait until the time this waveform step was supposed to end,
diff --git a/services/core/java/com/android/server/Watchdog.java b/services/core/java/com/android/server/Watchdog.java
index 418deb8..630548d 100644
--- a/services/core/java/com/android/server/Watchdog.java
+++ b/services/core/java/com/android/server/Watchdog.java
@@ -113,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",
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/connectivity/DnsManager.java b/services/core/java/com/android/server/connectivity/DnsManager.java
index c789186..1f0fb5e 100644
--- a/services/core/java/com/android/server/connectivity/DnsManager.java
+++ b/services/core/java/com/android/server/connectivity/DnsManager.java
@@ -45,8 +45,8 @@
 import android.os.UserHandle;
 import android.provider.Settings;
 import android.text.TextUtils;
+import android.util.Log;
 import android.util.Pair;
-import android.util.Slog;
 
 import java.net.InetAddress;
 import java.util.Arrays;
@@ -279,7 +279,7 @@
     }
 
     public PrivateDnsConfig updatePrivateDns(Network network, PrivateDnsConfig cfg) {
-        Slog.w(TAG, "updatePrivateDns(" + network + ", " + cfg + ")");
+        Log.w(TAG, "updatePrivateDns(" + network + ", " + cfg + ")");
         return (cfg != null)
                 ? mPrivateDnsMap.put(network.netId, cfg)
                 : mPrivateDnsMap.remove(network.netId);
@@ -389,7 +389,7 @@
             mPrivateDnsValidationMap.remove(netId);
         }
 
-        Slog.d(TAG, String.format("sendDnsConfigurationForNetwork(%d, %s, %s, %d, %d, %d, %d, "
+        Log.d(TAG, String.format("sendDnsConfigurationForNetwork(%d, %s, %s, %d, %d, %d, %d, "
                 + "%d, %d, %s, %s)", paramsParcel.netId, Arrays.toString(paramsParcel.servers),
                 Arrays.toString(paramsParcel.domains), paramsParcel.sampleValiditySeconds,
                 paramsParcel.successThreshold, paramsParcel.minSamples,
@@ -400,7 +400,7 @@
         try {
             mDnsResolver.setResolverConfiguration(paramsParcel);
         } catch (RemoteException | ServiceSpecificException e) {
-            Slog.e(TAG, "Error setting DNS configuration: " + e);
+            Log.e(TAG, "Error setting DNS configuration: " + e);
             return;
         }
     }
@@ -431,8 +431,8 @@
                 DNS_RESOLVER_SAMPLE_VALIDITY_SECONDS,
                 DNS_RESOLVER_DEFAULT_SAMPLE_VALIDITY_SECONDS);
         if (mSampleValidity < 0 || mSampleValidity > 65535) {
-            Slog.w(TAG, "Invalid sampleValidity=" + mSampleValidity + ", using default=" +
-                    DNS_RESOLVER_DEFAULT_SAMPLE_VALIDITY_SECONDS);
+            Log.w(TAG, "Invalid sampleValidity=" + mSampleValidity + ", using default="
+                    + DNS_RESOLVER_DEFAULT_SAMPLE_VALIDITY_SECONDS);
             mSampleValidity = DNS_RESOLVER_DEFAULT_SAMPLE_VALIDITY_SECONDS;
         }
 
@@ -440,17 +440,17 @@
                 DNS_RESOLVER_SUCCESS_THRESHOLD_PERCENT,
                 DNS_RESOLVER_DEFAULT_SUCCESS_THRESHOLD_PERCENT);
         if (mSuccessThreshold < 0 || mSuccessThreshold > 100) {
-            Slog.w(TAG, "Invalid successThreshold=" + mSuccessThreshold + ", using default=" +
-                    DNS_RESOLVER_DEFAULT_SUCCESS_THRESHOLD_PERCENT);
+            Log.w(TAG, "Invalid successThreshold=" + mSuccessThreshold + ", using default="
+                    + DNS_RESOLVER_DEFAULT_SUCCESS_THRESHOLD_PERCENT);
             mSuccessThreshold = DNS_RESOLVER_DEFAULT_SUCCESS_THRESHOLD_PERCENT;
         }
 
         mMinSamples = getIntSetting(DNS_RESOLVER_MIN_SAMPLES, DNS_RESOLVER_DEFAULT_MIN_SAMPLES);
         mMaxSamples = getIntSetting(DNS_RESOLVER_MAX_SAMPLES, DNS_RESOLVER_DEFAULT_MAX_SAMPLES);
         if (mMinSamples < 0 || mMinSamples > mMaxSamples || mMaxSamples > 64) {
-            Slog.w(TAG, "Invalid sample count (min, max)=(" + mMinSamples + ", " + mMaxSamples +
-                    "), using default=(" + DNS_RESOLVER_DEFAULT_MIN_SAMPLES + ", " +
-                    DNS_RESOLVER_DEFAULT_MAX_SAMPLES + ")");
+            Log.w(TAG, "Invalid sample count (min, max)=(" + mMinSamples + ", " + mMaxSamples
+                    + "), using default=(" + DNS_RESOLVER_DEFAULT_MIN_SAMPLES + ", "
+                    + DNS_RESOLVER_DEFAULT_MAX_SAMPLES + ")");
             mMinSamples = DNS_RESOLVER_DEFAULT_MIN_SAMPLES;
             mMaxSamples = DNS_RESOLVER_DEFAULT_MAX_SAMPLES;
         }
diff --git a/services/core/java/com/android/server/connectivity/MultipathPolicyTracker.java b/services/core/java/com/android/server/connectivity/MultipathPolicyTracker.java
index d548871..21ef356 100644
--- a/services/core/java/com/android/server/connectivity/MultipathPolicyTracker.java
+++ b/services/core/java/com/android/server/connectivity/MultipathPolicyTracker.java
@@ -60,8 +60,8 @@
 import android.provider.Settings;
 import android.telephony.TelephonyManager;
 import android.util.DebugUtils;
+import android.util.Log;
 import android.util.Range;
-import android.util.Slog;
 
 import com.android.internal.R;
 import com.android.internal.annotations.VisibleForTesting;
@@ -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.
@@ -225,7 +230,7 @@
             mUsageCallback = new UsageCallback() {
                 @Override
                 public void onThresholdReached(int networkType, String subscriberId) {
-                    if (DBG) Slog.d(TAG, "onThresholdReached for network " + network);
+                    if (DBG) Log.d(TAG, "onThresholdReached for network " + network);
                     mMultipathBudget = 0;
                     updateMultipathBudget();
                 }
@@ -247,7 +252,7 @@
             final long bytes = getNetworkTotalBytes(
                     start.toInstant().toEpochMilli(),
                     end.toInstant().toEpochMilli());
-            if (DBG) Slog.d(TAG, "Non-default data usage: " + bytes);
+            if (DBG) Log.d(TAG, "Non-default data usage: " + bytes);
             return bytes;
         }
 
@@ -256,7 +261,7 @@
                 return LocalServices.getService(NetworkStatsManagerInternal.class)
                         .getNetworkTotalBytes(mNetworkTemplate, start, end);
             } catch (RuntimeException e) {
-                Slog.w(TAG, "Failed to get data usage: " + e);
+                Log.w(TAG, "Failed to get data usage: " + e);
                 return -1;
             }
         }
@@ -321,17 +326,17 @@
         void updateMultipathBudget() {
             long quota = LocalServices.getService(NetworkPolicyManagerInternal.class)
                     .getSubscriptionOpportunisticQuota(this.network, QUOTA_TYPE_MULTIPATH);
-            if (DBG) Slog.d(TAG, "Opportunistic quota from data plan: " + quota + " bytes");
+            if (DBG) Log.d(TAG, "Opportunistic quota from data plan: " + quota + " bytes");
 
             // Fallback to user settings-based quota if not available from phone plan
             if (quota == OPPORTUNISTIC_QUOTA_UNKNOWN) {
                 quota = getUserPolicyOpportunisticQuotaBytes();
-                if (DBG) Slog.d(TAG, "Opportunistic quota from user policy: " + quota + " bytes");
+                if (DBG) Log.d(TAG, "Opportunistic quota from user policy: " + quota + " bytes");
             }
 
             if (quota == OPPORTUNISTIC_QUOTA_UNKNOWN) {
                 quota = getDefaultDailyMultipathQuotaBytes();
-                if (DBG) Slog.d(TAG, "Setting quota: " + quota + " bytes");
+                if (DBG) Log.d(TAG, "Setting quota: " + quota + " bytes");
             }
 
             // TODO: re-register if day changed: budget may have run out but should be refreshed.
@@ -339,7 +344,7 @@
                 // If there is already a usage callback pending , there's no need to re-register it
                 // if the quota hasn't changed. The callback will simply fire as expected when the
                 // budget is spent.
-                if (DBG) Slog.d(TAG, "Quota still " + quota + ", not updating.");
+                if (DBG) Log.d(TAG, "Quota still " + quota + ", not updating.");
                 return;
             }
             mQuota = quota;
@@ -359,8 +364,9 @@
             // since last time, so even if this is called very often the budget will not snap to 0
             // as soon as there are less than 2MB left for today.
             if (budget > NetworkStatsManager.MIN_THRESHOLD_BYTES) {
-                if (DBG) Slog.d(TAG, "Setting callback for " + budget +
-                        " bytes on network " + network);
+                if (DBG) {
+                    Log.d(TAG, "Setting callback for " + budget + " bytes on network " + network);
+                }
                 registerUsageCallback(budget);
             } else {
                 maybeUnregisterUsageCallback();
@@ -397,7 +403,7 @@
 
         private void maybeUnregisterUsageCallback() {
             if (haveMultipathBudget()) {
-                if (DBG) Slog.d(TAG, "Unregistering callback, budget was " + mMultipathBudget);
+                if (DBG) Log.d(TAG, "Unregistering callback, budget was " + mMultipathBudget);
                 mStatsManager.unregisterUsageCallback(mUsageCallback);
                 mMultipathBudget = 0;
             }
@@ -462,9 +468,9 @@
                 try {
                     mMultipathTrackers.put(network, new MultipathTracker(network, nc));
                 } catch (IllegalStateException e) {
-                    Slog.e(TAG, "Can't track mobile network " + network + ": " + e.getMessage());
+                    Log.e(TAG, "Can't track mobile network " + network + ": " + e.getMessage());
                 }
-                if (DBG) Slog.d(TAG, "Tracking mobile network " + network);
+                if (DBG) Log.d(TAG, "Tracking mobile network " + network);
             }
 
             @Override
@@ -474,7 +480,7 @@
                     existing.shutdown();
                     mMultipathTrackers.remove(network);
                 }
-                if (DBG) Slog.d(TAG, "No longer tracking mobile network " + network);
+                if (DBG) Log.d(TAG, "No longer tracking mobile network " + network);
             }
         };
 
@@ -519,16 +525,16 @@
 
         @Override
         public void onChange(boolean selfChange) {
-            Slog.wtf(TAG, "Should never be reached.");
+            Log.wtf(TAG, "Should never be reached.");
         }
 
         @Override
         public void onChange(boolean selfChange, Uri uri) {
             if (!Settings.Global.getUriFor(NETWORK_DEFAULT_DAILY_MULTIPATH_QUOTA_BYTES)
                     .equals(uri)) {
-                Slog.wtf(TAG, "Unexpected settings observation: " + uri);
+                Log.wtf(TAG, "Unexpected settings observation: " + uri);
             }
-            if (DBG) Slog.d(TAG, "Settings change: updating budgets.");
+            if (DBG) Log.d(TAG, "Settings change: updating budgets.");
             updateAllMultipathBudgets();
         }
     }
@@ -536,7 +542,7 @@
     private final class ConfigChangeReceiver extends BroadcastReceiver {
         @Override
         public void onReceive(Context context, Intent intent) {
-            if (DBG) Slog.d(TAG, "Configuration change: updating budgets.");
+            if (DBG) Log.d(TAG, "Configuration change: updating budgets.");
             updateAllMultipathBudgets();
         }
     }
diff --git a/services/core/java/com/android/server/connectivity/Nat464Xlat.java b/services/core/java/com/android/server/connectivity/Nat464Xlat.java
index 3091a71..d9c2e80 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;
@@ -30,7 +30,7 @@
 import android.os.INetworkManagementService;
 import android.os.RemoteException;
 import android.os.ServiceSpecificException;
-import android.util.Slog;
+import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.ArrayUtils;
@@ -176,7 +176,7 @@
         try {
             mNMService.registerObserver(this);
         } catch (RemoteException e) {
-            Slog.e(TAG, "Can't register iface observer for clat on " + mNetwork.toShortString());
+            Log.e(TAG, "Can't register iface observer for clat on " + mNetwork.toShortString());
             return;
         }
 
@@ -185,7 +185,7 @@
         try {
             addrStr = mNetd.clatdStart(baseIface, mNat64PrefixInUse.toString());
         } catch (RemoteException | ServiceSpecificException e) {
-            Slog.e(TAG, "Error starting clatd on " + baseIface + ": " + e);
+            Log.e(TAG, "Error starting clatd on " + baseIface + ": " + e);
         }
         mIface = CLAT_PREFIX + baseIface;
         mBaseIface = baseIface;
@@ -193,7 +193,7 @@
         try {
             mIPv6Address = (Inet6Address) InetAddresses.parseNumericAddress(addrStr);
         } catch (ClassCastException | IllegalArgumentException | NullPointerException e) {
-            Slog.e(TAG, "Invalid IPv6 address " + addrStr);
+            Log.e(TAG, "Invalid IPv6 address " + addrStr);
         }
         if (mPrefixDiscoveryRunning && !isPrefixDiscoveryNeeded()) {
             stopPrefixDiscovery();
@@ -218,7 +218,7 @@
         try {
             mNMService.unregisterObserver(this);
         } catch (RemoteException | IllegalStateException e) {
-            Slog.e(TAG, "Error unregistering clatd observer on " + mBaseIface + ": " + e);
+            Log.e(TAG, "Error unregistering clatd observer on " + mBaseIface + ": " + e);
         }
         mNat64PrefixInUse = null;
         mIface = null;
@@ -242,37 +242,37 @@
     @VisibleForTesting
     protected void start() {
         if (isStarted()) {
-            Slog.e(TAG, "startClat: already started");
+            Log.e(TAG, "startClat: already started");
             return;
         }
 
         if (mNetwork.linkProperties == null) {
-            Slog.e(TAG, "startClat: Can't start clat with null LinkProperties");
+            Log.e(TAG, "startClat: Can't start clat with null LinkProperties");
             return;
         }
 
         String baseIface = mNetwork.linkProperties.getInterfaceName();
         if (baseIface == null) {
-            Slog.e(TAG, "startClat: Can't start clat on null interface");
+            Log.e(TAG, "startClat: Can't start clat on null interface");
             return;
         }
         // TODO: should we only do this if mNetd.clatdStart() succeeds?
-        Slog.i(TAG, "Starting clatd on " + baseIface);
+        Log.i(TAG, "Starting clatd on " + baseIface);
         enterStartingState(baseIface);
     }
 
     @VisibleForTesting
     protected void stop() {
         if (!isStarted()) {
-            Slog.e(TAG, "stopClat: already stopped");
+            Log.e(TAG, "stopClat: already stopped");
             return;
         }
 
-        Slog.i(TAG, "Stopping clatd on " + mBaseIface);
+        Log.i(TAG, "Stopping clatd on " + mBaseIface);
         try {
             mNetd.clatdStop(mBaseIface);
         } catch (RemoteException | ServiceSpecificException e) {
-            Slog.e(TAG, "Error stopping clatd on " + mBaseIface + ": " + e);
+            Log.e(TAG, "Error stopping clatd on " + mBaseIface + ": " + e);
         }
 
         String iface = mIface;
@@ -294,7 +294,7 @@
         try {
             mDnsResolver.startPrefix64Discovery(getNetId());
         } catch (RemoteException | ServiceSpecificException e) {
-            Slog.e(TAG, "Error starting prefix discovery on netId " + getNetId() + ": " + e);
+            Log.e(TAG, "Error starting prefix discovery on netId " + getNetId() + ": " + e);
         }
         mPrefixDiscoveryRunning = true;
     }
@@ -303,7 +303,7 @@
         try {
             mDnsResolver.stopPrefix64Discovery(getNetId());
         } catch (RemoteException | ServiceSpecificException e) {
-            Slog.e(TAG, "Error stopping prefix discovery on netId " + getNetId() + ": " + e);
+            Log.e(TAG, "Error stopping prefix discovery on netId " + getNetId() + ": " + e);
         }
         mPrefixDiscoveryRunning = false;
     }
@@ -320,7 +320,7 @@
         try {
             mDnsResolver.setPrefix64(getNetId(), prefixString);
         } catch (RemoteException | ServiceSpecificException e) {
-            Slog.e(TAG, "Error setting NAT64 prefix on netId " + getNetId() + " to "
+            Log.e(TAG, "Error setting NAT64 prefix on netId " + getNetId() + " to "
                     + prefix + ": " + e);
         }
     }
@@ -328,7 +328,7 @@
     private void maybeHandleNat64PrefixChange() {
         final IpPrefix newPrefix = selectNat64Prefix();
         if (!Objects.equals(mNat64PrefixInUse, newPrefix)) {
-            Slog.d(TAG, "NAT64 prefix changed from " + mNat64PrefixInUse + " to "
+            Log.d(TAG, "NAT64 prefix changed from " + mNat64PrefixInUse + " to "
                     + newPrefix);
             stop();
             // It's safe to call update here, even though this method is called from update, because
@@ -418,7 +418,7 @@
             return;
         }
 
-        Slog.d(TAG, "clatd running, updating NAI for " + mIface);
+        Log.d(TAG, "clatd running, updating NAI for " + mIface);
         for (LinkProperties stacked: oldLp.getStackedLinks()) {
             if (Objects.equals(mIface, stacked.getInterfaceName())) {
                 lp.addStackedLink(stacked);
@@ -447,10 +447,11 @@
 
     private LinkAddress getLinkAddress(String iface) {
         try {
-            InterfaceConfiguration config = mNMService.getInterfaceConfig(iface);
-            return config.getLinkAddress();
-        } catch (RemoteException | IllegalStateException e) {
-            Slog.e(TAG, "Error getting link properties: " + e);
+            final InterfaceConfigurationParcel config = mNetd.interfaceGetCfg(iface);
+            return new LinkAddress(
+                    InetAddresses.parseNumericAddress(config.ipv4Addr), config.prefixLength);
+        } catch (IllegalArgumentException | RemoteException | ServiceSpecificException e) {
+            Log.e(TAG, "Error getting link properties: " + e);
             return null;
         }
     }
@@ -479,11 +480,11 @@
 
         LinkAddress clatAddress = getLinkAddress(iface);
         if (clatAddress == null) {
-            Slog.e(TAG, "clatAddress was null for stacked iface " + iface);
+            Log.e(TAG, "clatAddress was null for stacked iface " + iface);
             return;
         }
 
-        Slog.i(TAG, String.format("interface %s is up, adding stacked link %s on top of %s",
+        Log.i(TAG, String.format("interface %s is up, adding stacked link %s on top of %s",
                 mIface, mIface, mBaseIface));
         enterRunningState();
         LinkProperties lp = new LinkProperties(mNetwork.linkProperties);
@@ -502,7 +503,7 @@
             return;
         }
 
-        Slog.i(TAG, "interface " + iface + " removed");
+        Log.i(TAG, "interface " + iface + " removed");
         // If we're running, and the interface was removed, then we didn't call stop(), and it's
         // likely that clatd crashed. Ensure we call stop() so we can start clatd again. Calling
         // stop() will also update LinkProperties, and if clatd crashed, the LinkProperties update
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 3385393..7795ed3 100644
--- a/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java
+++ b/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java
@@ -35,7 +35,7 @@
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
-import android.util.Slog;
+import android.util.Log;
 import android.util.SparseArray;
 import android.util.SparseIntArray;
 import android.widget.Toast;
@@ -43,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 {
 
@@ -74,7 +73,13 @@
 
     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;
@@ -170,7 +175,7 @@
         final int previousEventId = mNotificationTypeMap.get(id);
         final NotificationType previousNotifyType = NotificationType.getFromId(previousEventId);
         if (priority(previousNotifyType) > priority(notifyType)) {
-            Slog.d(TAG, String.format(
+            Log.d(TAG, String.format(
                     "ignoring notification %s for network %s with existing notification %s",
                     notifyType, id, previousNotifyType));
             return;
@@ -178,7 +183,7 @@
         clearNotification(id);
 
         if (DBG) {
-            Slog.d(TAG, String.format(
+            Log.d(TAG, String.format(
                     "showNotification tag=%s event=%s transport=%s name=%s highPriority=%s",
                     tag, nameOf(eventId), getTransportName(transportType), name, highPriority));
         }
@@ -248,7 +253,7 @@
             // are sent, but they are not implemented yet.
             return;
         } else {
-            Slog.wtf(TAG, "Unknown notification type " + notifyType + " on network transport "
+            Log.wtf(TAG, "Unknown notification type " + notifyType + " on network transport "
                     + getTransportName(transportType));
             return;
         }
@@ -259,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)
@@ -290,7 +294,7 @@
         try {
             mNotificationManager.notify(tag, eventId, notification);
         } catch (NullPointerException npe) {
-            Slog.d(TAG, "setNotificationVisible: visible notificationManager error", npe);
+            Log.d(TAG, "setNotificationVisible: visible notificationManager error", npe);
         }
     }
 
@@ -313,13 +317,13 @@
         final String tag = tagFor(id);
         final int eventId = mNotificationTypeMap.get(id);
         if (DBG) {
-            Slog.d(TAG, String.format("clearing notification tag=%s event=%s", tag,
+            Log.d(TAG, String.format("clearing notification tag=%s event=%s", tag,
                    nameOf(eventId)));
         }
         try {
             mNotificationManager.cancel(tag, eventId);
         } catch (NullPointerException npe) {
-            Slog.d(TAG, String.format(
+            Log.d(TAG, String.format(
                     "failed to clear notification tag=%s event=%s", tag, nameOf(eventId)), npe);
         }
         mNotificationTypeMap.delete(id);
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/ProxyTracker.java b/services/core/java/com/android/server/connectivity/ProxyTracker.java
index 26cc3ee..5cb3d94 100644
--- a/services/core/java/com/android/server/connectivity/ProxyTracker.java
+++ b/services/core/java/com/android/server/connectivity/ProxyTracker.java
@@ -35,7 +35,7 @@
 import android.os.UserHandle;
 import android.provider.Settings;
 import android.text.TextUtils;
-import android.util.Slog;
+import android.util.Log;
 
 import com.android.internal.annotations.GuardedBy;
 
@@ -168,7 +168,7 @@
                 proxyProperties = new ProxyInfo(host, port, exclList);
             }
             if (!proxyProperties.isValid()) {
-                if (DBG) Slog.d(TAG, "Invalid proxy properties, ignoring: " + proxyProperties);
+                if (DBG) Log.d(TAG, "Invalid proxy properties, ignoring: " + proxyProperties);
                 return;
             }
 
@@ -223,7 +223,7 @@
         if (mPacManager.setCurrentProxyScriptUrl(proxyInfo) == PacManager.DONT_SEND_BROADCAST) {
             return;
         }
-        if (DBG) Slog.d(TAG, "sending Proxy Broadcast for " + proxyInfo);
+        if (DBG) Log.d(TAG, "sending Proxy Broadcast for " + proxyInfo);
         Intent intent = new Intent(Proxy.PROXY_CHANGE_ACTION);
         intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING |
                 Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
@@ -255,7 +255,7 @@
             if (proxyInfo != null && (!TextUtils.isEmpty(proxyInfo.getHost()) ||
                     !Uri.EMPTY.equals(proxyInfo.getPacFileUrl()))) {
                 if (!proxyInfo.isValid()) {
-                    if (DBG) Slog.d(TAG, "Invalid proxy properties, ignoring: " + proxyInfo);
+                    if (DBG) Log.d(TAG, "Invalid proxy properties, ignoring: " + proxyInfo);
                     return;
                 }
                 mGlobalProxy = new ProxyInfo(proxyInfo);
@@ -296,7 +296,7 @@
         synchronized (mProxyLock) {
             if (Objects.equals(mDefaultProxy, proxyInfo)) return;
             if (proxyInfo != null &&  !proxyInfo.isValid()) {
-                if (DBG) Slog.d(TAG, "Invalid proxy properties, ignoring: " + proxyInfo);
+                if (DBG) Log.d(TAG, "Invalid proxy properties, ignoring: " + proxyInfo);
                 return;
             }
 
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
index 1a83272..3445275 100644
--- a/services/core/java/com/android/server/connectivity/Vpn.java
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
@@ -18,20 +18,18 @@
 
 import static android.Manifest.permission.BIND_VPN_SERVICE;
 import static android.net.ConnectivityManager.NETID_UNSET;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED;
 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;
@@ -110,9 +108,6 @@
 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;
@@ -123,7 +118,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;
@@ -153,36 +147,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;
     /**
@@ -199,6 +170,7 @@
     // 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;
@@ -207,7 +179,8 @@
     @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) */
@@ -218,6 +191,7 @@
     private final INetworkManagementService mNetd;
     @VisibleForTesting
     protected VpnConfig mConfig;
+    private final NetworkProvider mNetworkProvider;
     @VisibleForTesting
     protected NetworkAgent mNetworkAgent;
     private final Looper mLooper;
@@ -401,6 +375,7 @@
             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;
@@ -419,13 +394,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);
     }
@@ -443,110 +421,44 @@
      * 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);
     }
 
     /**
-     * Updates {@link #mNetworkCapabilities} based on current underlying networks and returns a
-     * defensive copy.
-     *
-     * <p>Does not propagate updated capabilities to apps.
-     *
-     * @param defaultNetwork underlying network for VPNs following platform's default
-     */
-    public synchronized NetworkCapabilities updateCapabilities(@Nullable Network defaultNetwork) {
-        if (mConfig == null) {
-            // VPN is not running.
-            return null;
-        }
-
-        Network[] underlyingNetworks = mConfig.underlyingNetworks;
-        if (underlyingNetworks == null && defaultNetwork != null) {
-            // null underlying networks means to track the default.
-            underlyingNetworks = new Network[] { defaultNetwork };
-        }
-        // Only apps targeting Q and above can explicitly declare themselves as metered.
-        final boolean isAlwaysMetered = mIsPackageTargetingAtLeastQ && mConfig.isMetered;
-
-        applyUnderlyingCapabilities(
-                mContext.getSystemService(ConnectivityManager.class),
-                underlyingNetworks,
-                mNetworkCapabilities,
-                isAlwaysMetered);
-
-        return new NetworkCapabilities(mNetworkCapabilities);
-    }
-
-    @VisibleForTesting
-    public static void applyUnderlyingCapabilities(
-            ConnectivityManager cm,
-            Network[] underlyingNetworks,
-            NetworkCapabilities caps,
-            boolean isAlwaysMetered) {
-        int[] transportTypes = new int[] { NetworkCapabilities.TRANSPORT_VPN };
-        int downKbps = NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
-        int upKbps = NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
-        boolean metered = isAlwaysMetered; // metered if any underlying is metered, or alwaysMetered
-        boolean roaming = false; // roaming if any underlying is roaming
-        boolean congested = false; // congested if any underlying is congested
-        boolean suspended = true; // suspended if all underlying are suspended
-
-        boolean hadUnderlyingNetworks = false;
-        if (null != underlyingNetworks) {
-            for (Network underlying : underlyingNetworks) {
-                // TODO(b/124469351): Get capabilities directly from ConnectivityService instead.
-                final NetworkCapabilities underlyingCaps = cm.getNetworkCapabilities(underlying);
-                if (underlyingCaps == null) continue;
-                hadUnderlyingNetworks = true;
-                for (int underlyingType : underlyingCaps.getTransportTypes()) {
-                    transportTypes = ArrayUtils.appendInt(transportTypes, underlyingType);
-                }
-
-                // Merge capabilities of this underlying network. For bandwidth, assume the
-                // worst case.
-                downKbps = NetworkCapabilities.minBandwidth(downKbps,
-                        underlyingCaps.getLinkDownstreamBandwidthKbps());
-                upKbps = NetworkCapabilities.minBandwidth(upKbps,
-                        underlyingCaps.getLinkUpstreamBandwidthKbps());
-                // If this underlying network is metered, the VPN is metered (it may cost money
-                // to send packets on this network).
-                metered |= !underlyingCaps.hasCapability(NET_CAPABILITY_NOT_METERED);
-                // If this underlying network is roaming, the VPN is roaming (the billing structure
-                // is different than the usual, local one).
-                roaming |= !underlyingCaps.hasCapability(NET_CAPABILITY_NOT_ROAMING);
-                // If this underlying network is congested, the VPN is congested (the current
-                // condition of the network affects the performance of this network).
-                congested |= !underlyingCaps.hasCapability(NET_CAPABILITY_NOT_CONGESTED);
-                // If this network is not suspended, the VPN is not suspended (the VPN
-                // is able to transfer some data).
-                suspended &= !underlyingCaps.hasCapability(NET_CAPABILITY_NOT_SUSPENDED);
-            }
-        }
-        if (!hadUnderlyingNetworks) {
-            // No idea what the underlying networks are; assume the safer defaults
-            metered = true;
-            roaming = false;
-            congested = false;
-            suspended = false;
-        }
-
-        caps.setTransportTypes(transportTypes);
-        caps.setLinkDownstreamBandwidthKbps(downKbps);
-        caps.setLinkUpstreamBandwidthKbps(upKbps);
-        caps.setCapability(NET_CAPABILITY_NOT_METERED, !metered);
-        caps.setCapability(NET_CAPABILITY_NOT_ROAMING, !roaming);
-        caps.setCapability(NET_CAPABILITY_NOT_CONGESTED, !congested);
-        caps.setCapability(NET_CAPABILITY_NOT_SUSPENDED, !suspended);
-    }
-
-    /**
      * Chooses whether to force all connections to go though VPN.
      *
      * Used to enable/disable legacy VPN lockdown.
@@ -865,7 +777,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;
@@ -973,7 +885,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) {
@@ -1016,7 +928,7 @@
             }
             mConfig = null;
 
-            updateState(DetailedState.IDLE, "prepare");
+            updateState(DetailedState.DISCONNECTED, "prepare");
             setVpnForcedLocked(mLockdown);
         } finally {
             Binder.restoreCallingIdentity(token);
@@ -1036,20 +948,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");
@@ -1058,9 +971,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
@@ -1086,21 +999,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);
     }
 
@@ -1250,7 +1164,7 @@
         mNetworkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
 
         mLegacyState = LegacyVpnInfo.STATE_CONNECTING;
-        mNetworkInfo.setDetailedState(DetailedState.CONNECTING, null, null);
+        updateState(DetailedState.CONNECTING, "agentConnect");
 
         NetworkAgentConfig networkAgentConfig = new NetworkAgentConfig();
         networkAgentConfig.allowBypass = mConfig.allowBypass && !mLockdown;
@@ -1259,26 +1173,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 {
@@ -1288,19 +1216,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");
     }
 
     /**
@@ -1325,21 +1246,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);
         }
@@ -1388,6 +1310,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.
@@ -1479,7 +1403,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);
             }
@@ -1571,12 +1495,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);
             }
@@ -1599,12 +1524,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);
             }
@@ -1621,6 +1547,9 @@
 
         // Quit any active connections
         agentDisconnect();
+
+        // The provider has been registered in the constructor, which is called in onUserStart.
+        mConnectivityManager.unregisterNetworkProvider(mNetworkProvider);
     }
 
     /**
@@ -1853,6 +1782,8 @@
                 }
             }
         }
+        mNetworkAgent.setUnderlyingNetworks((mConfig.underlyingNetworks != null)
+                ? Arrays.asList(mConfig.underlyingNetworks) : null);
         return true;
     }
 
@@ -1942,7 +1873,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))
@@ -2059,7 +1990,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 {
@@ -2395,7 +2326,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()) {
@@ -2404,10 +2334,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) {
@@ -2694,8 +2631,7 @@
 
             resetIkeState();
 
-            final ConnectivityManager cm = ConnectivityManager.from(mContext);
-            cm.unregisterNetworkCallback(mNetworkCallback);
+            mConnectivityManager.unregisterNetworkCallback(mNetworkCallback);
 
             mExecutor.shutdown();
         }
@@ -2757,6 +2693,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
@@ -2774,13 +2712,12 @@
             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;
                         }
                     }
@@ -2913,15 +2850,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.
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
index 804cc92..b2d694b 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
@@ -1569,10 +1569,11 @@
         // When the device is not unplugged but reawaken from standby, we check if the System
         // Audio Control Feature is enabled or not then decide if turning SAM on/off accordingly.
         if (getAvrDeviceInfo() != null && portId == getAvrDeviceInfo().getPortId()) {
+            HdmiLogger.debug("Port ID:%d, 5v=%b", portId, connected);
             if (!connected) {
                 setSystemAudioMode(false);
-            } else if (mSystemAudioControlFeatureEnabled != mService.isSystemAudioActivated()){
-                setSystemAudioMode(mSystemAudioControlFeatureEnabled);
+            } else {
+                onNewAvrAdded(getAvrDeviceInfo());
             }
         }
 
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java b/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java
index fe97f70..ea24532 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java
@@ -148,9 +148,25 @@
         addValidationInfo(Constants.MESSAGE_SET_MENU_LANGUAGE,
                 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);
@@ -176,9 +192,10 @@
                 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(
@@ -515,6 +532,28 @@
     }
 
     /**
+     * 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)
@@ -544,15 +583,7 @@
         } else if (serviceIdentificationMethod == 0x80) {
             // Services identified by Channel
             if (isValidDigitalBroadcastSystem(digitalBroadcastSystem)) {
-                // 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 isValidChannelIdentifier(params, offset);
             }
         }
         return false;
@@ -632,6 +663,65 @@
         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) {
@@ -863,4 +953,78 @@
             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/hdmi/SetArcTransmissionStateAction.java b/services/core/java/com/android/server/hdmi/SetArcTransmissionStateAction.java
index 6633789..db93ad0 100644
--- a/services/core/java/com/android/server/hdmi/SetArcTransmissionStateAction.java
+++ b/services/core/java/com/android/server/hdmi/SetArcTransmissionStateAction.java
@@ -102,12 +102,12 @@
     }
 
     private void setArcStatus(boolean enabled) {
-        boolean wasEnabled = tv().setArcStatus(enabled);
-        Slog.i(TAG, "Change arc status [old:" + wasEnabled + ", new:" + enabled + "]");
+        tv().setArcStatus(enabled);
+        Slog.i(TAG, "Change arc status to " + enabled);
 
         // If enabled before and set to "disabled" and send <Report Arc Terminated> to
         // av reciever.
-        if (!enabled && wasEnabled) {
+        if (!enabled) {
             sendCommand(HdmiCecMessageBuilder.buildReportArcTerminated(getSourceAddress(),
                     mAvrAddress));
         }
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/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/media/MediaKeyDispatcher.java b/services/core/java/com/android/server/media/MediaKeyDispatcher.java
index 5933723..fc7c82a 100644
--- a/services/core/java/com/android/server/media/MediaKeyDispatcher.java
+++ b/services/core/java/com/android/server/media/MediaKeyDispatcher.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.PendingIntent;
+import android.content.Context;
 import android.media.session.ISessionManager;
 import android.media.session.MediaSession;
 import android.os.Binder;
@@ -60,7 +61,7 @@
 
     private Map<Integer, Integer> mOverriddenKeyEvents;
 
-    public MediaKeyDispatcher() {
+    public MediaKeyDispatcher(Context context) {
         // Constructor used for reflection
         mOverriddenKeyEvents = new HashMap<>();
         mOverriddenKeyEvents.put(KeyEvent.KEYCODE_MEDIA_PLAY, 0);
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index b02b900..9dde4c8 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -96,7 +96,6 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * System implementation of MediaSessionManager
@@ -152,7 +151,6 @@
 
     private SessionPolicyProvider mCustomSessionPolicyProvider;
     private MediaKeyDispatcher mCustomMediaKeyDispatcher;
-    private Map<Integer, Integer> mOverriddenKeyEventsMap;
 
     public MediaSessionService(Context context) {
         super(context);
@@ -771,7 +769,6 @@
     private void instantiateCustomDispatcher(String nameFromTesting) {
         synchronized (mLock) {
             mCustomMediaKeyDispatcher = null;
-            mOverriddenKeyEventsMap = null;
 
             String customDispatcherClassName = (nameFromTesting == null)
                     ? mContext.getResources().getString(R.string.config_customMediaKeyDispatcher)
@@ -779,9 +776,10 @@
             try {
                 if (!TextUtils.isEmpty(customDispatcherClassName)) {
                     Class customDispatcherClass = Class.forName(customDispatcherClassName);
-                    Constructor constructor = customDispatcherClass.getDeclaredConstructor();
-                    mCustomMediaKeyDispatcher = (MediaKeyDispatcher) constructor.newInstance();
-                    mOverriddenKeyEventsMap = mCustomMediaKeyDispatcher.getOverriddenKeyEvents();
+                    Constructor constructor =
+                            customDispatcherClass.getDeclaredConstructor(Context.class);
+                    mCustomMediaKeyDispatcher =
+                            (MediaKeyDispatcher) constructor.newInstance(mContext);
                 }
             } catch (ClassNotFoundException | InstantiationException | InvocationTargetException
                     | IllegalAccessException | NoSuchMethodException e) {
@@ -801,9 +799,10 @@
             try {
                 if (!TextUtils.isEmpty(customProviderClassName)) {
                     Class customProviderClass = Class.forName(customProviderClassName);
-                    Constructor constructor = customProviderClass.getDeclaredConstructor();
+                    Constructor constructor =
+                            customProviderClass.getDeclaredConstructor(Context.class);
                     mCustomSessionPolicyProvider =
-                            (SessionPolicyProvider) constructor.newInstance();
+                            (SessionPolicyProvider) constructor.newInstance(mContext);
                 }
             } catch (ClassNotFoundException | InstantiationException | InvocationTargetException
                     | IllegalAccessException | NoSuchMethodException e) {
@@ -2398,9 +2397,12 @@
                     return;
                 }
 
-                int overriddenKeyEvents = (mCustomMediaKeyDispatcher == null) ? 0
-                        : mCustomMediaKeyDispatcher.getOverriddenKeyEvents()
-                                .get(keyEvent.getKeyCode());
+                int overriddenKeyEvents = 0;
+                if (mCustomMediaKeyDispatcher != null
+                        && mCustomMediaKeyDispatcher.getOverriddenKeyEvents() != null) {
+                    overriddenKeyEvents = mCustomMediaKeyDispatcher.getOverriddenKeyEvents()
+                            .get(keyEvent.getKeyCode());
+                }
                 cancelTrackingIfNeeded(packageName, pid, uid, asSystemService, keyEvent,
                         needWakeLock, opPackageName, stream, musicOnly, overriddenKeyEvents);
                 if (!needTracking(keyEvent, overriddenKeyEvents)) {
diff --git a/services/core/java/com/android/server/media/SessionPolicyProvider.java b/services/core/java/com/android/server/media/SessionPolicyProvider.java
index 5f02a07..332c85a 100644
--- a/services/core/java/com/android/server/media/SessionPolicyProvider.java
+++ b/services/core/java/com/android/server/media/SessionPolicyProvider.java
@@ -18,6 +18,7 @@
 
 import android.annotation.IntDef;
 import android.annotation.NonNull;
+import android.content.Context;
 import android.media.session.MediaSession;
 
 import java.lang.annotation.Retention;
@@ -54,7 +55,7 @@
      */
     static final int SESSION_POLICY_IGNORE_BUTTON_SESSION = 1 << 1;
 
-    public SessionPolicyProvider() {
+    public SessionPolicyProvider(Context context) {
         // Constructor used for reflection
     }
 
diff --git a/services/core/java/com/android/server/net/LockdownVpnTracker.java b/services/core/java/com/android/server/net/LockdownVpnTracker.java
index 06cebac..ea1d8da 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;
@@ -35,14 +37,13 @@
 import android.security.Credentials;
 import android.security.KeyStore;
 import android.text.TextUtils;
-import android.util.Slog;
+import android.util.Log;
 
 import com.android.internal.R;
 import com.android.internal.annotations.GuardedBy;
 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;
@@ -124,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);
+        Log.d(TAG, "handleStateChanged: egress=" + egressType
+                + " " + mAcceptedEgressIface + "->" + egressIface);
 
         if (egressDisconnected || egressChanged) {
             mAcceptedEgressIface = null;
@@ -140,7 +140,6 @@
             return;
         }
 
-        final int egressType = egressInfo.getType();
         if (vpnInfo.getDetailedState() == DetailedState.FAILED) {
             EventLogTags.writeLockdownVpnError(egressType);
         }
@@ -150,7 +149,7 @@
 
         } else if (egressInfo.isConnected() && !vpnInfo.isConnectedOrConnecting()) {
             if (mProfile.isValidLockdownProfile()) {
-                Slog.d(TAG, "Active network connected; starting VPN");
+                Log.d(TAG, "Active network connected; starting VPN");
                 EventLogTags.writeLockdownVpnConnecting(egressType);
                 showNotification(R.string.vpn_lockdown_connecting, R.drawable.vpn_disconnected);
 
@@ -161,11 +160,11 @@
                     mVpn.startLegacyVpnPrivileged(mProfile, KeyStore.getInstance(), egressProp);
                 } catch (IllegalStateException e) {
                     mAcceptedEgressIface = null;
-                    Slog.e(TAG, "Failed to start VPN", e);
+                    Log.e(TAG, "Failed to start VPN", e);
                     showNotification(R.string.vpn_lockdown_error, R.drawable.vpn_disconnected);
                 }
             } else {
-                Slog.e(TAG, "Invalid VPN profile; requires IP-based server and DNS");
+                Log.e(TAG, "Invalid VPN profile; requires IP-based server and DNS");
                 showNotification(R.string.vpn_lockdown_error, R.drawable.vpn_disconnected);
             }
 
@@ -173,8 +172,8 @@
             final String iface = vpnConfig.interfaze;
             final List<LinkAddress> sourceAddrs = vpnConfig.addresses;
 
-            Slog.d(TAG, "VPN connected using iface=" + iface +
-                    ", sourceAddr=" + sourceAddrs.toString());
+            Log.d(TAG, "VPN connected using iface=" + iface
+                    + ", sourceAddr=" + sourceAddrs.toString());
             EventLogTags.writeLockdownVpnConnected(egressType);
             showNotification(R.string.vpn_lockdown_connected, R.drawable.vpn_connected);
 
@@ -191,7 +190,7 @@
     }
 
     private void initLocked() {
-        Slog.d(TAG, "initLocked()");
+        Log.d(TAG, "initLocked()");
 
         mVpn.setEnableTeardown(false);
         mVpn.setLockdown(true);
@@ -205,7 +204,7 @@
     }
 
     private void shutdownLocked() {
-        Slog.d(TAG, "shutdownLocked()");
+        Log.d(TAG, "shutdownLocked()");
 
         mAcceptedEgressIface = null;
         mErrorCount = 0;
@@ -223,7 +222,7 @@
      */
     @GuardedBy("mConnService.mVpns")
     public void reset() {
-        Slog.d(TAG, "reset()");
+        Log.d(TAG, "reset()");
         synchronized (mStateLock) {
             // cycle tracker, reset error count, and trigger retry
             shutdownLocked();
@@ -256,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))
diff --git a/services/core/java/com/android/server/net/NetworkPolicyLogger.java b/services/core/java/com/android/server/net/NetworkPolicyLogger.java
index 006d78e..5bd352c 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyLogger.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyLogger.java
@@ -17,11 +17,13 @@
 
 import static android.net.INetd.FIREWALL_CHAIN_DOZABLE;
 import static android.net.INetd.FIREWALL_CHAIN_POWERSAVE;
+import static android.net.INetd.FIREWALL_CHAIN_RESTRICTED;
 import static android.net.INetd.FIREWALL_CHAIN_STANDBY;
 import static android.net.INetd.FIREWALL_RULE_ALLOW;
 import static android.net.INetd.FIREWALL_RULE_DENY;
 import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_DOZABLE;
 import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_POWERSAVE;
+import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_RESTRICTED;
 import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_STANDBY;
 import static android.net.NetworkPolicyManager.FIREWALL_RULE_DEFAULT;
 import static android.os.Process.INVALID_UID;
@@ -339,6 +341,8 @@
                 return FIREWALL_CHAIN_NAME_STANDBY;
             case FIREWALL_CHAIN_POWERSAVE:
                 return FIREWALL_CHAIN_NAME_POWERSAVE;
+            case FIREWALL_CHAIN_RESTRICTED:
+                return FIREWALL_CHAIN_NAME_RESTRICTED;
             default:
                 return String.valueOf(chain);
         }
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index 7d0457b..e8f4826 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -559,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
@@ -1186,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
@@ -1831,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);
@@ -1843,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) {
@@ -1853,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);
@@ -2172,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();
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java
index 12c24d4..81a6641 100644
--- a/services/core/java/com/android/server/net/NetworkStatsService.java
+++ b/services/core/java/com/android/server/net/NetworkStatsService.java
@@ -1084,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);
         }
     }
 
@@ -1100,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;
@@ -1429,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");
@@ -1511,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();
@@ -1578,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}.
      */
@@ -1931,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);
@@ -2226,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/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/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index dac3252..7fa3225 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -4206,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();
         }
@@ -4388,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);
@@ -8587,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 {
@@ -10553,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);
@@ -19199,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)
@@ -19265,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);
             }
@@ -21036,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.
diff --git a/services/core/java/com/android/server/pm/PreferredComponent.java b/services/core/java/com/android/server/pm/PreferredComponent.java
index c312fc0..a0b2e86 100644
--- a/services/core/java/com/android/server/pm/PreferredComponent.java
+++ b/services/core/java/com/android/server/pm/PreferredComponent.java
@@ -254,6 +254,37 @@
         return numMatch == NS;
     }
 
+    public boolean sameSet(PreferredComponent pc) {
+        if (mSetPackages == null || pc == null || pc.mSetPackages == null
+                || !sameComponent(pc.mComponent)) {
+            return false;
+        }
+        final int otherPackageCount = pc.mSetPackages.length;
+        final int packageCount = mSetPackages.length;
+        if (otherPackageCount != packageCount) {
+            return false;
+        }
+        for (int i = 0; i < packageCount; i++) {
+            if (!mSetPackages[i].equals(pc.mSetPackages[i])
+                    || !mSetClasses[i].equals(pc.mSetClasses[i])) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /** Returns true if the preferred component represents the provided ComponentName. */
+    private boolean sameComponent(ComponentName comp) {
+        if (mComponent == null || comp == null) {
+            return false;
+        }
+        if (mComponent.getPackageName().equals(comp.getPackageName())
+                && mComponent.getClassName().equals(comp.getClassName())) {
+            return true;
+        }
+        return false;
+    }
+
     public boolean isSuperset(List<ResolveInfo> query, boolean excludeSetupWizardPackage) {
         if (mSetPackages == null) {
             return query == null;
diff --git a/services/core/java/com/android/server/pm/PreferredIntentResolver.java b/services/core/java/com/android/server/pm/PreferredIntentResolver.java
index a261e29..ff3df13 100644
--- a/services/core/java/com/android/server/pm/PreferredIntentResolver.java
+++ b/services/core/java/com/android/server/pm/PreferredIntentResolver.java
@@ -22,6 +22,7 @@
 import java.io.PrintWriter;
 
 import com.android.server.IntentResolver;
+import java.util.ArrayList;
 
 public class PreferredIntentResolver
         extends IntentResolver<PreferredActivity, PreferredActivity> {
@@ -45,4 +46,24 @@
     protected IntentFilter getIntentFilter(@NonNull PreferredActivity input) {
         return input;
     }
+
+    public boolean shouldAddPreferredActivity(PreferredActivity pa) {
+        ArrayList<PreferredActivity> pal = findFilters(pa);
+        if (pal == null || pal.isEmpty()) {
+            return true;
+        }
+        if (!pa.mPref.mAlways) {
+            return false;
+        }
+        final int activityCount = pal.size();
+        for (int i = 0; i < activityCount; i++) {
+            PreferredActivity cur = pal.get(i);
+            if (cur.mPref.mAlways
+                    && cur.mPref.mMatch == (pa.mPref.mMatch & IntentFilter.MATCH_CATEGORY_MASK)
+                    && cur.mPref.sameSet(pa.mPref)) {
+                return false;
+            }
+        }
+        return true;
+    }
 }
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 0f5d978..79e5b27 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -1410,8 +1410,7 @@
                 PreferredActivity pa = new PreferredActivity(parser);
                 if (pa.mPref.getParseError() == null) {
                     final PreferredIntentResolver resolver = editPreferredActivitiesLPw(userId);
-                    ArrayList<PreferredActivity> pal = resolver.findFilters(pa);
-                    if (pal == null || pal.size() == 0 || pa.mPref.mAlways) {
+                    if (resolver.shouldAddPreferredActivity(pa)) {
                         resolver.addFilter(pa);
                     }
                 } else {
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..4f3f9dc 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyCallbackImpl.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyCallbackImpl.java
@@ -16,28 +16,52 @@
 
 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 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 com.android.internal.R;
+import com.android.server.timedetector.TimeDetectorStrategy.Origin;
+
+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));
+
+    /**
+     * By default telephony and network only suggestions are accepted and telephony takes
+     * precedence over network.
+     */
+    private static final @Origin int[] DEFAULT_AUTOMATIC_TIME_ORIGIN_PRIORITIES =
+            { ORIGIN_TELEPHONY, ORIGIN_NETWORK };
+
+    /**
      * 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 +72,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 +87,8 @@
         mSystemClockUpdateThresholdMillis =
                 SystemProperties.getInt("ro.sys.time_detector_update_diff",
                         SYSTEM_CLOCK_UPDATE_THRESHOLD_MILLIS_DEFAULT);
+
+        mOriginPriorities = getOriginPriorities(context);
     }
 
     @Override
@@ -79,6 +106,16 @@
     }
 
     @Override
+    public Instant autoTimeLowerBound() {
+        return TIME_LOWER_BOUND;
+    }
+
+    @Override
+    public int[] autoOriginPriorities() {
+        return mOriginPriorities;
+    }
+
+    @Override
     public void acquireWakeLock() {
         if (mWakeLock.isHeld()) {
             Slog.wtf(TAG, "WakeLock " + mWakeLock + " already held");
@@ -113,4 +150,20 @@
             Slog.wtf(TAG, "WakeLock " + mWakeLock + " not held");
         }
     }
+
+    private static int[] getOriginPriorities(@NonNull Context context) {
+        String[] originStrings =
+                context.getResources().getStringArray(R.array.config_autoTimeSourcesPriority);
+        if (originStrings.length == 0) {
+            return DEFAULT_AUTOMATIC_TIME_ORIGIN_PRIORITIES;
+        } else {
+            int[] origins = new int[originStrings.length];
+            for (int i = 0; i < originStrings.length; i++) {
+                int origin = stringToOrigin(originStrings[i]);
+                origins[i] = origin;
+            }
+
+            return origins;
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
index 88de340..b3c8c90 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
@@ -16,7 +16,10 @@
 
 package com.android.server.timedetector;
 
-import android.annotation.IntDef;
+import static com.android.server.timedetector.TimeDetectorStrategy.originToString;
+
+import static java.util.stream.Collectors.joining;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.AlarmManager;
@@ -34,8 +37,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 +66,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 +86,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 +109,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[] autoOriginPriorities();
+
+        /** 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 +213,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 +229,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
@@ -215,6 +256,14 @@
         ipw.println("mCallback.systemClockMillis()=" + mCallback.systemClockMillis());
         ipw.println("mCallback.systemClockUpdateThresholdMillis()="
                 + mCallback.systemClockUpdateThresholdMillis());
+        ipw.printf("mCallback.autoTimeLowerBound()=%s(%s)\n",
+                mCallback.autoTimeLowerBound(),
+                mCallback.autoTimeLowerBound().toEpochMilli());
+        String priorities =
+                Arrays.stream(mCallback.autoOriginPriorities())
+                        .mapToObj(TimeDetectorStrategy::originToString)
+                        .collect(joining(",", "[", "]"));
+        ipw.println("mCallback.autoOriginPriorities()=" + priorities);
 
         ipw.println("Time change log:");
         ipw.increaseIndent(); // level 2
@@ -236,14 +285,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 +338,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 +365,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.autoOriginPriorities();
+        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 +487,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 +528,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 +536,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 +567,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 +611,7 @@
                         + " systemClockUpdateThreshold=" + systemClockUpdateThreshold
                         + " absTimeDifference=" + absTimeDifference);
             }
-            return;
+            return true;
         }
 
         mCallback.setSystemClock(newSystemClockMillis);
@@ -556,6 +631,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/tv/TvInputManagerService.java b/services/core/java/com/android/server/tv/TvInputManagerService.java
index 323ac7b..bedcf9c 100755
--- a/services/core/java/com/android/server/tv/TvInputManagerService.java
+++ b/services/core/java/com/android/server/tv/TvInputManagerService.java
@@ -714,6 +714,7 @@
         SessionState sessionState = userState.sessionStateMap.remove(sessionToken);
 
         if (sessionState == null) {
+            Slog.e(TAG, "sessionState null, no more remove session action!");
             return;
         }
 
@@ -2278,8 +2279,16 @@
                 ClientState clientState = userState.clientStateMap.get(clientToken);
                 if (clientState != null) {
                     while (clientState.sessionTokens.size() > 0) {
+                        IBinder sessionToken = clientState.sessionTokens.get(0);
                         releaseSessionLocked(
-                                clientState.sessionTokens.get(0), Process.SYSTEM_UID, userId);
+                                sessionToken, Process.SYSTEM_UID, userId);
+                        // the releaseSessionLocked function may return before the sessionToken
+                        // is removed if the related sessionState is null. So need to check again
+                        // to avoid death curculation.
+                        if (clientState.sessionTokens.contains(sessionToken)) {
+                            Slog.d(TAG, "remove sessionToken " + sessionToken + " for " + clientToken);
+                            clientState.sessionTokens.remove(sessionToken);
+                        }
                     }
                 }
                 clientToken = null;
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/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
index 189b21f..7e6abf8 100644
--- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
+++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
@@ -376,6 +376,13 @@
                     return -1;
             }
         }
+
+        PackageOptimizationInfo getPackageOptimizationInfo(ArtManagerInternal artManagerInternal) {
+            return artManagerInternal == null || launchedActivityAppRecordRequiredAbi == null
+                    ? PackageOptimizationInfo.createWithNoInfo()
+                    : artManagerInternal.getPackageOptimizationInfo(applicationInfo,
+                            launchedActivityAppRecordRequiredAbi, launchedActivityName);
+        }
     }
 
     ActivityMetricsLogger(ActivityStackSupervisor supervisor, Looper looper) {
@@ -836,14 +843,8 @@
                     info.bindApplicationDelayMs);
         }
         builder.addTaggedData(APP_TRANSITION_WINDOWS_DRAWN_DELAY_MS, info.windowsDrawnDelayMs);
-        final ArtManagerInternal artManagerInternal = getArtManagerInternal();
         final PackageOptimizationInfo packageOptimizationInfo =
-                (artManagerInternal == null) || (info.launchedActivityAppRecordRequiredAbi == null)
-                ? PackageOptimizationInfo.createWithNoInfo()
-                : artManagerInternal.getPackageOptimizationInfo(
-                        info.applicationInfo,
-                        info.launchedActivityAppRecordRequiredAbi,
-                        info.launchedActivityName);
+                info.getPackageOptimizationInfo(getArtManagerInternal());
         builder.addTaggedData(PACKAGE_OPTIMIZATION_COMPILATION_REASON,
                 packageOptimizationInfo.getCompilationReason());
         builder.addTaggedData(PACKAGE_OPTIMIZATION_COMPILATION_FILTER,
@@ -962,6 +963,8 @@
         builder.addTaggedData(APP_TRANSITION_PROCESS_RUNNING,
                 info.mProcessRunning ? 1 : 0);
         mMetricsLogger.write(builder);
+        final PackageOptimizationInfo packageOptimizationInfo =
+                infoSnapshot.getPackageOptimizationInfo(getArtManagerInternal());
         FrameworkStatsLog.write(
                 FrameworkStatsLog.APP_START_FULLY_DRAWN,
                 info.mLastLaunchedActivity.info.applicationInfo.uid,
@@ -971,7 +974,9 @@
                         : FrameworkStatsLog.APP_START_FULLY_DRAWN__TYPE__WITHOUT_BUNDLE,
                 info.mLastLaunchedActivity.info.name,
                 info.mProcessRunning,
-                startupTimeMs);
+                startupTimeMs,
+                packageOptimizationInfo.getCompilationReason(),
+                packageOptimizationInfo.getCompilationFilter());
 
         // Ends the trace started at the beginning of this function. This is located here to allow
         // the trace slice to have a noticable duration.
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/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_am_BatteryStatsService.cpp b/services/core/jni/com_android_server_am_BatteryStatsService.cpp
index 0e68f5b..0034286 100644
--- a/services/core/jni/com_android_server_am_BatteryStatsService.cpp
+++ b/services/core/jni/com_android_server_am_BatteryStatsService.cpp
@@ -124,7 +124,7 @@
         {
             std::unique_lock<std::mutex> reasonsLock(mReasonsMutex, std::defer_lock);
             if (reasonsLock.try_lock() && mWakeupReasons.empty()) {
-                mWakeupReasons = std::move(wakeupReasons);
+                mWakeupReasons = wakeupReasons;
                 reasonsCaptured = true;
             }
         }
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/net/Android.bp b/services/net/Android.bp
index 72ad366..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",
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 1944965..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,6 @@
 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;
@@ -227,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 {
diff --git a/services/tests/servicestests/src/com/android/server/NetworkManagementInternalTest.java b/services/tests/servicestests/src/com/android/server/NetworkManagementInternalTest.java
deleted file mode 100644
index 33ea1d6..0000000
--- a/services/tests/servicestests/src/com/android/server/NetworkManagementInternalTest.java
+++ /dev/null
@@ -1,144 +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.server;
-
-import static android.net.INetd.FIREWALL_CHAIN_DOZABLE;
-import static android.net.INetd.FIREWALL_CHAIN_POWERSAVE;
-import static android.net.INetd.FIREWALL_CHAIN_STANDBY;
-import static android.net.INetd.FIREWALL_RULE_ALLOW;
-import static android.net.INetd.FIREWALL_RULE_DENY;
-import static android.net.NetworkPolicyManager.FIREWALL_RULE_DEFAULT;
-import static android.util.DebugUtils.valueToString;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import android.net.NetworkPolicyManager;
-import android.util.ArrayMap;
-
-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.util.function.BiFunction;
-
-/**
- * Test class for {@link NetworkManagementInternal}.
- *
- * To run the tests, use
- *
- * runtest -c com.android.server.NetworkManagementInternalTest frameworks-services
- *
- * or the following steps:
- *
- * Build: m FrameworksServicesTests
- * Install: adb install -r \
- *     ${ANDROID_PRODUCT_OUT}/data/app/FrameworksServicesTests/FrameworksServicesTests.apk
- * Run: adb shell am instrument -e class com.android.server.NetworkManagementInternalTest -w \
- *     com.android.frameworks.servicestests/androidx.test.runner.AndroidJUnitRunner
- */
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public class NetworkManagementInternalTest {
-    private static final int TEST_UID = 111;
-
-    private NetworkManagementService.Injector mInjector;
-    private NetworkManagementInternal mNmi;
-
-    @Before
-    public void setUp() {
-        final NetworkManagementService service = new NetworkManagementService();
-        mInjector = service.getInjector();
-        mNmi = service.new LocalService();
-    }
-
-    @Test
-    public void testIsNetworkRestrictedForUid() {
-        // No firewall chains enabled
-        assertFalse(mNmi.isNetworkRestrictedForUid(TEST_UID));
-
-        // Restrict usage of mobile data in background
-        mInjector.setUidOnMeteredNetworkList(true, TEST_UID, true);
-        assertTrue("Should be true since mobile data usage is restricted",
-                mNmi.isNetworkRestrictedForUid(TEST_UID));
-        mInjector.reset();
-
-        // Data saver is on and uid is not allowlisted
-        mInjector.setDataSaverMode(true);
-        mInjector.setUidOnMeteredNetworkList(false, TEST_UID, false);
-        assertTrue("Should be true since data saver is on and the uid is not whitelisted",
-                mNmi.isNetworkRestrictedForUid(TEST_UID));
-        mInjector.reset();
-
-        // Data saver is on and uid is allowlisted
-        mInjector.setDataSaverMode(true);
-        mInjector.setUidOnMeteredNetworkList(false, TEST_UID, true);
-        assertFalse("Should be false since data saver is on and the uid is whitelisted",
-                mNmi.isNetworkRestrictedForUid(TEST_UID));
-        mInjector.reset();
-
-        final ArrayMap<Integer, ArrayMap<Integer, Boolean>> expected = new ArrayMap<>();
-        // Dozable chain
-        final ArrayMap<Integer, Boolean> isRestrictedForDozable = new ArrayMap<>();
-        isRestrictedForDozable.put(FIREWALL_RULE_DEFAULT, true);
-        isRestrictedForDozable.put(FIREWALL_RULE_ALLOW, false);
-        isRestrictedForDozable.put(FIREWALL_RULE_DENY, true);
-        expected.put(FIREWALL_CHAIN_DOZABLE, isRestrictedForDozable);
-        // Powersaver chain
-        final ArrayMap<Integer, Boolean> isRestrictedForPowerSave = new ArrayMap<>();
-        isRestrictedForPowerSave.put(FIREWALL_RULE_DEFAULT, true);
-        isRestrictedForPowerSave.put(FIREWALL_RULE_ALLOW, false);
-        isRestrictedForPowerSave.put(FIREWALL_RULE_DENY, true);
-        expected.put(FIREWALL_CHAIN_POWERSAVE, isRestrictedForPowerSave);
-        // Standby chain
-        final ArrayMap<Integer, Boolean> isRestrictedForStandby = new ArrayMap<>();
-        isRestrictedForStandby.put(FIREWALL_RULE_DEFAULT, false);
-        isRestrictedForStandby.put(FIREWALL_RULE_ALLOW, false);
-        isRestrictedForStandby.put(FIREWALL_RULE_DENY, true);
-        expected.put(FIREWALL_CHAIN_STANDBY, isRestrictedForStandby);
-
-        final int[] chains = {
-                FIREWALL_CHAIN_STANDBY,
-                FIREWALL_CHAIN_POWERSAVE,
-                FIREWALL_CHAIN_DOZABLE
-        };
-        final int[] states = {
-                FIREWALL_RULE_ALLOW,
-                FIREWALL_RULE_DENY,
-                FIREWALL_RULE_DEFAULT
-        };
-        BiFunction<Integer, Integer, String> errorMsg = (chain, state) -> {
-            return String.format("Unexpected value for chain: %s and state: %s",
-                    valueToString(NetworkPolicyManager.class, "FIREWALL_CHAIN_", chain),
-                    valueToString(NetworkPolicyManager.class, "FIREWALL_RULE_", state));
-        };
-        for (int chain : chains) {
-            final ArrayMap<Integer, Boolean> expectedValues = expected.get(chain);
-            mInjector.setFirewallChainState(chain, true);
-            for (int state : states) {
-                mInjector.setFirewallRule(chain, TEST_UID, state);
-                assertEquals(errorMsg.apply(chain, state),
-                        expectedValues.get(state), mNmi.isNetworkRestrictedForUid(TEST_UID));
-            }
-            mInjector.reset();
-        }
-    }
-}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageValidatorTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageValidatorTest.java
index 553df3b..63d7dbd 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageValidatorTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageValidatorTest.java
@@ -353,6 +353,147 @@
         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)));
     }
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..21396fd 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,40 @@
                 .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)
+                .pokeAutoOriginPriorities(ORIGIN_NETWORK)
                 .pokeAutoTimeDetectionEnabled(true);
 
         NetworkTimeSuggestion timeSuggestion =
-                mScript.generateNetworkTimeSuggestion(ARBITRARY_TEST_TIME_MILLIS);
+                mScript.generateNetworkTimeSuggestion(ARBITRARY_TEST_TIME);
 
         mScript.simulateTimePassing();
 
@@ -504,10 +542,11 @@
     @Test
     public void testSuggestNetworkTime_autoTimeDisabled() {
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
+                .pokeAutoOriginPriorities(ORIGIN_NETWORK)
                 .pokeAutoTimeDetectionEnabled(false);
 
         NetworkTimeSuggestion timeSuggestion =
-                mScript.generateNetworkTimeSuggestion(ARBITRARY_TEST_TIME_MILLIS);
+                mScript.generateNetworkTimeSuggestion(ARBITRARY_TEST_TIME);
 
         mScript.simulateTimePassing()
                 .simulateNetworkTimeSuggestion(timeSuggestion)
@@ -515,21 +554,37 @@
     }
 
     @Test
-    public void testSuggestNetworkTime_telephonySuggestionsBeatNetworkSuggestions() {
+    public void networkTimeSuggestion_ignoredWhenReferencedTimeIsInThePast() {
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
+                .pokeAutoOriginPriorities(ORIGIN_NETWORK)
                 .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 highPrioritySuggestionsShouldBeatLowerPrioritySuggestions() {
+        mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
+                .pokeAutoTimeDetectionEnabled(true)
+                .pokeAutoOriginPriorities(ORIGIN_TELEPHONY, ORIGIN_NETWORK);
+
         // 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(
@@ -539,7 +594,7 @@
         mScript.assertLatestTelephonySuggestion(ARBITRARY_SLOT_INDEX, null)
                 .assertLatestNetworkSuggestion(networkTimeSuggestion1);
         assertEquals(networkTimeSuggestion1, mScript.peekLatestValidNetworkSuggestion());
-        assertNull(mScript.peekBestTelephonySuggestion());
+        assertNull("No telephony suggestions were made:", mScript.peekBestTelephonySuggestion());
 
         // Simulate a little time passing.
         mScript.simulateTimePassing(smallTimeIncrementMillis)
@@ -548,7 +603,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 +623,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();
@@ -594,7 +649,9 @@
         mScript.assertLatestTelephonySuggestion(ARBITRARY_SLOT_INDEX, telephonyTimeSuggestion)
                 .assertLatestNetworkSuggestion(networkTimeSuggestion2);
         assertEquals(networkTimeSuggestion2, mScript.peekLatestValidNetworkSuggestion());
-        assertNull(mScript.peekBestTelephonySuggestion());
+        assertNull(
+                "Telephony suggestion should be expired:",
+                mScript.peekBestTelephonySuggestion());
 
         // Toggle auto-time off and on to force the detection logic to run.
         mScript.simulateAutoTimeDetectionToggle()
@@ -609,19 +666,105 @@
         mScript.assertLatestTelephonySuggestion(ARBITRARY_SLOT_INDEX, telephonyTimeSuggestion)
                 .assertLatestNetworkSuggestion(networkTimeSuggestion2);
         assertEquals(networkTimeSuggestion2, mScript.peekLatestValidNetworkSuggestion());
-        assertNull(mScript.peekBestTelephonySuggestion());
+        assertNull(
+                "Telephony suggestion should still be expired:",
+                mScript.peekBestTelephonySuggestion());
+    }
+
+    @Test
+    public void whenAllTimeSuggestionsAreAvailable_higherPriorityWins_lowerPriorityComesFirst() {
+        mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
+                .pokeAutoTimeDetectionEnabled(true)
+                .pokeAutoOriginPriorities(ORIGIN_TELEPHONY, ORIGIN_NETWORK);
+
+        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)
+                .pokeAutoOriginPriorities(ORIGIN_TELEPHONY, ORIGIN_NETWORK);
+
+        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)
+                .pokeAutoOriginPriorities(ORIGIN_TELEPHONY, ORIGIN_NETWORK);
+
+        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(ORIGIN_TELEPHONY);
+
+        NetworkTimeSuggestion timeSuggestion = mScript.generateNetworkTimeSuggestion(
+                ARBITRARY_TEST_TIME);
+
+        mScript.simulateNetworkTimeSuggestion(timeSuggestion)
+                .assertLatestNetworkSuggestion(timeSuggestion)
+                .verifySystemClockWasNotSetAndResetCallTracking();
+    }
+
+    @Test
+    public void autoOriginPrioritiesList_doesNotAffectManualSuggestion() {
+        mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
+                .pokeAutoTimeDetectionEnabled(false)
+                .pokeAutoOriginPriorities(ORIGIN_TELEPHONY);
+
+        ManualTimeSuggestion timeSuggestion =
+                mScript.generateManualTimeSuggestion(ARBITRARY_TEST_TIME);
+
+        mScript.simulateManualTimeSuggestion(timeSuggestion, true /* expectedResult */)
+                .verifySystemClockWasSetAndResetCallTracking(ARBITRARY_TEST_TIME.toEpochMilli());
     }
 
     /**
      * 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 +780,16 @@
         }
 
         @Override
+        public Instant autoTimeLowerBound() {
+            return TIME_LOWER_BOUND;
+        }
+
+        @Override
+        public int[] autoOriginPriorities() {
+            return mAutoOriginPriorities;
+        }
+
+        @Override
         public void acquireWakeLock() {
             if (mWakeLockAcquired) {
                 fail("Wake lock already acquired");
@@ -685,6 +838,10 @@
             mAutoTimeDetectionEnabled = enabled;
         }
 
+        void pokeAutoOriginPriorities(@Origin int[] autoOriginPriorities) {
+            mAutoOriginPriorities = autoOriginPriorities;
+        }
+
         long peekElapsedRealtimeMillis() {
             return mElapsedRealtimeMillis;
         }
@@ -703,7 +860,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 +891,7 @@
 
         Script() {
             mFakeCallback = new FakeCallback();
-            mTimeDetectorStrategy = new TimeDetectorStrategyImpl();
-            mTimeDetectorStrategy.initialize(mFakeCallback);
-
+            mTimeDetectorStrategy = new TimeDetectorStrategyImpl(mFakeCallback);
         }
 
         Script pokeAutoTimeDetectionEnabled(boolean enabled) {
@@ -741,9 +899,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 +910,11 @@
             return this;
         }
 
+        Script pokeAutoOriginPriorities(@Origin int... autoOriginPriorities) {
+            mFakeCallback.pokeAutoOriginPriorities(autoOriginPriorities);
+            return this;
+        }
+
         long peekElapsedRealtimeMillis() {
             return mFakeCallback.peekElapsedRealtimeMillis();
         }
@@ -765,8 +928,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 +947,7 @@
 
         Script simulateAutoTimeDetectionToggle() {
             mFakeCallback.simulateAutoTimeZoneDetectionToggle();
-            mTimeDetectorStrategy.handleAutoTimeDetectionChanged();
+            mTimeDetectorStrategy.handleAutoTimeConfigChanged();
             return this;
         }
 
@@ -809,7 +979,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 +1014,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 +1026,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 +1072,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/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/telecomm/java/android/telecom/CallerInfo.java b/telecomm/java/android/telecom/CallerInfo.java
index aff2f01..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)) {
diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java
index bbf34df..724a9e4 100644
--- a/telecomm/java/android/telecom/Connection.java
+++ b/telecomm/java/android/telecom/Connection.java
@@ -767,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)}.
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/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index 0c5cd7e..da2d4d8 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -32,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;
@@ -983,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.
      */
@@ -1161,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.
      */
@@ -1231,7 +1228,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public List<PhoneAccountHandle> getPhoneAccountsForPackage() {
         try {
             if (isServiceConnected()) {
@@ -1359,7 +1356,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void clearPhoneAccounts() {
         clearAccounts();
     }
@@ -1369,7 +1366,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void clearAccounts() {
         try {
             if (isServiceConnected()) {
@@ -1401,7 +1398,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public ComponentName getDefaultPhoneApp() {
         try {
             if (isServiceConnected()) {
@@ -1462,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,
@@ -1508,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.
      */
@@ -1529,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.
@@ -1582,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.
@@ -1602,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.
@@ -1683,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.
      *
@@ -1714,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.
      */
@@ -1739,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.
@@ -1953,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.
      */
@@ -1979,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.
@@ -2000,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}
@@ -2025,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() {
@@ -2413,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/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/common/com/android/internal/telephony/CarrierAppUtils.java b/telephony/common/com/android/internal/telephony/CarrierAppUtils.java
index 7aecfdd..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;
@@ -314,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 7736473..02d7410 100644
--- a/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java
+++ b/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java
@@ -34,6 +34,7 @@
 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;
 
@@ -44,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}.
      *
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/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/CallForwardingInfo.java b/telephony/java/android/telephony/CallForwardingInfo.java
index 6ae6d00..aeac36e 100644
--- a/telephony/java/android/telephony/CallForwardingInfo.java
+++ b/telephony/java/android/telephony/CallForwardingInfo.java
@@ -86,7 +86,7 @@
      * Call forwarding reason types
      * @hide
      */
-    @IntDef(flag = true, prefix = { "REASON_" }, value = {
+    @IntDef(prefix = { "REASON_" }, value = {
         REASON_UNCONDITIONAL,
         REASON_BUSY,
         REASON_NO_REPLY,
diff --git a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/telephony/java/android/telephony/CarrierBandwidth.aidl
similarity index 76%
copy from services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
copy to telephony/java/android/telephony/CarrierBandwidth.aidl
index 45e4c69..d0861b8 100644
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ b/telephony/java/android/telephony/CarrierBandwidth.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * 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.
@@ -13,11 +13,5 @@
  * 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;
-}
+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
index d5e834d..27ea690 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -26,6 +26,7 @@
 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;
@@ -78,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;
 
     /**
@@ -583,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}.
      *
@@ -1702,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.
      *
@@ -1982,8 +2030,16 @@
             "allow_hold_call_during_emergency_bool";
 
     /**
-     * Flag indicating whether the carrier supports RCS presence indication for
-     * User Capability Exchange (UCE).  When presence is supported, the device should use the
+     * Flag indicating whether or not the carrier supports the periodic exchange of phone numbers
+     * in the user's address book with the carrier's presence server in order to retrieve the RCS
+     * capabilities for each contact used in the RCS User Capability Exchange (UCE) procedure. See
+     * RCC.71, section 3 for more information.
+     * <p>
+     * The flag {@link Ims#KEY_ENABLE_PRESENCE_PUBLISH_BOOL} must also be enabled if this flag is
+     * enabled, as sending a periodic SIP PUBLISH with this device's RCS capabilities is a
+     * requirement for capability exchange to begin.
+     * <p>
+     * When presence is supported, the device should use the
      * {@link android.provider.ContactsContract.Data#CARRIER_PRESENCE} bit mask and set the
      * {@link android.provider.ContactsContract.Data#CARRIER_PRESENCE_VT_CAPABLE} bit to indicate
      * whether each contact supports video calling.  The UI is made aware that presence is enabled
@@ -2676,7 +2732,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";
 
@@ -3799,12 +3855,27 @@
         public static final String KEY_IMS_SINGLE_REGISTRATION_REQUIRED_BOOL =
                 KEY_PREFIX + "ims_single_registration_required_bool";
 
+        /**
+         * A boolean flag specifying whether or not this carrier supports the device notifying the
+         * network of its RCS capabilities using the SIP PUBLISH procedure defined for User
+         * Capability Exchange (UCE). See RCC.71, section 3 for more information.
+         * <p>
+         * If this key's value is set to false, the procedure for RCS contact capability exchange
+         * via SIP SUBSCRIBE/NOTIFY will also be disabled internally, and
+         * {@link #KEY_USE_RCS_PRESENCE_BOOL} must also be set to false to ensure apps do not
+         * improperly think that capability exchange via SIP PUBLISH is enabled.
+         * <p> The default value for this key is {@code false}.
+         */
+        public static final String KEY_ENABLE_PRESENCE_PUBLISH_BOOL =
+                KEY_PREFIX + "enable_presence_publish_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);
+            defaults.putBoolean(KEY_ENABLE_PRESENCE_PUBLISH_BOOL, false);
             return defaults;
         }
     }
@@ -3968,6 +4039,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);
@@ -4317,6 +4389,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);
@@ -4742,7 +4815,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/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 8f5ec36..e595002 100644
--- a/telephony/java/android/telephony/CellLocation.java
+++ b/telephony/java/android/telephony/CellLocation.java
@@ -98,12 +98,14 @@
     /**
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract void fillInNotifierBundle(Bundle bundle);
 
     /**
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     @UnsupportedAppUsage
     public abstract boolean isEmpty();
 
@@ -111,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/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/ImsManager.java b/telephony/java/android/telephony/ImsManager.java
index 28feab2..42d7707 100644
--- a/telephony/java/android/telephony/ImsManager.java
+++ b/telephony/java/android/telephony/ImsManager.java
@@ -22,7 +22,12 @@
 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.
@@ -30,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
@@ -87,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
@@ -108,7 +119,7 @@
             throw new IllegalArgumentException("Invalid subscription ID: " + subscriptionId);
         }
 
-        return new ImsRcsManager(mContext, subscriptionId);
+        return new ImsRcsManager(mContext, subscriptionId, sRcsCache);
     }
 
     /**
@@ -124,17 +135,19 @@
             throw new IllegalArgumentException("Invalid subscription ID: " + subscriptionId);
         }
 
-        return new ImsMmTelManager(subscriptionId);
+        return new ImsMmTelManager(subscriptionId, sTelephonyCache);
     }
 
     /**
-     * Create an instance of SipDelegateManager for the subscription id specified.
+     * Create an instance of {@link SipDelegateManager} for the subscription id specified.
      * <p>
-     * Used for RCS single registration cases, where an IMS application needs to forward SIP
-     * traffic through the device's IMS service.
-     * @param subscriptionId The ID of the subscription that this SipDelegateManager will use.
+     * 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 SipDelegateManager instance for the specified subscription ID.
+     * @return a {@link SipDelegateManager} instance for the specified subscription ID.
      * @hide
      */
     @SystemApi
@@ -144,6 +157,22 @@
             throw new IllegalArgumentException("Invalid subscription ID: " + subscriptionId);
         }
 
-        return new SipDelegateManager(mContext, 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/NetworkRegistrationInfo.java b/telephony/java/android/telephony/NetworkRegistrationInfo.java
index f8a200a..8507d85 100644
--- a/telephony/java/android/telephony/NetworkRegistrationInfo.java
+++ b/telephony/java/android/telephony/NetworkRegistrationInfo.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.AccessNetworkConstants.TransportType;
@@ -635,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();
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 58e368b..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) {
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 fd9f460..9ea624b 100644
--- a/telephony/java/android/telephony/PreciseDataConnectionState.java
+++ b/telephony/java/android/telephony/PreciseDataConnectionState.java
@@ -73,7 +73,7 @@
      */
     @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,
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 2de1599..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>
@@ -2208,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 {}
@@ -2473,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}
 
     /**
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 3aa9345..83e63ef 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -127,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 */
@@ -1827,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");
@@ -1845,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",
@@ -1990,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());
     }
@@ -2048,7 +2048,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int getDefaultSmsPhoneId() {
         return getPhoneId(getDefaultSmsSubscriptionId());
     }
@@ -2182,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();
     }
@@ -2201,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 7324485..d156907 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -2802,7 +2802,7 @@
     /** 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.
@@ -4656,7 +4656,7 @@
      * be implemented instead.
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void setVisualVoicemailEnabled(PhoneAccountHandle phoneAccountHandle, boolean enabled){
     }
 
@@ -4671,7 +4671,7 @@
      */
     @SystemApi
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public boolean isVisualVoicemailEnabled(PhoneAccountHandle phoneAccountHandle){
         return false;
     }
@@ -4690,7 +4690,7 @@
      * @hide
      */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     @Nullable
     public Bundle getVisualVoicemailSettings(){
         try {
@@ -5603,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)
@@ -5647,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)
@@ -6675,7 +6726,7 @@
      *
      * @hide
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public boolean nvResetConfig(int resetType) {
         try {
             ITelephony telephony = getITelephony();
@@ -6944,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 {
@@ -6977,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 = "";
@@ -7049,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;
@@ -7348,7 +7399,7 @@
      * 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();
@@ -7368,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();
@@ -7387,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();
@@ -8054,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();
@@ -8428,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) {
@@ -8524,7 +8575,7 @@
 
     /** @hide */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public int checkCarrierPrivilegesForPackage(String pkgName) {
         try {
             ITelephony telephony = getITelephony();
@@ -8540,7 +8591,7 @@
 
     /** @hide */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public int checkCarrierPrivilegesForPackageAnyPhone(String pkgName) {
         try {
             ITelephony telephony = getITelephony();
@@ -8616,7 +8667,7 @@
 
     /** @hide */
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void dial(String number) {
         try {
             ITelephony telephony = getITelephony();
@@ -8675,7 +8726,7 @@
      */
     @Deprecated
     @SystemApi
-    @SuppressLint("Doclava125")
+    @SuppressLint("RequiresPermission")
     public void silenceRinger() {
         // No-op
     }
@@ -8774,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();
@@ -8788,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();
     }
 
     /**
@@ -9283,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;
@@ -9295,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;
     }
@@ -9308,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
@@ -9338,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;
     }
 
     /**
@@ -9718,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(
@@ -10090,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(
@@ -10115,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(
@@ -10140,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(
@@ -10169,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(
@@ -11795,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;
@@ -12877,6 +13030,37 @@
     }
 
     /**
+     * Get which bands the modem's background scan is acting on, specified by
+     * {@link #setSystemSelectionChannels}.
+     *
+     * <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}).
+     *
+     * @return a list of {@link RadioAccessSpecifier}, or an empty list if no bands are specified.
+     * @throws IllegalStateException if the Telephony process is not currently available.
+     *
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+    public @NonNull List<RadioAccessSpecifier> getSystemSelectionChannels() {
+        try {
+            ITelephony service = getITelephony();
+            if (service != null) {
+                return service.getSystemSelectionChannels(getSubId());
+            } else {
+                throw new IllegalStateException("telephony service is null.");
+            }
+        } catch (RemoteException ex) {
+            if (!isSystemProcess()) {
+                ex.rethrowAsRuntimeException();
+            }
+        }
+        return new ArrayList<>();
+    }
+
+    /**
      * Verifies whether the input MCC/MNC and MVNO correspond to the current carrier.
      *
      * @param mccmnc the carrier's mccmnc that you want to match
@@ -13339,18 +13523,22 @@
     }
 
     /**
-     * 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
      */
@@ -13362,81 +13550,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;
     }
 
     /**
@@ -13458,6 +13689,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() {
@@ -13613,6 +13987,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.
diff --git a/telephony/java/android/telephony/data/DataCallResponse.java b/telephony/java/android/telephony/data/DataCallResponse.java
index 39859b1..ca9bf3c 100644
--- a/telephony/java/android/telephony/data/DataCallResponse.java
+++ b/telephony/java/android/telephony/data/DataCallResponse.java
@@ -108,8 +108,19 @@
      */
     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;
@@ -122,6 +133,7 @@
     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.
@@ -169,14 +181,15 @@
                 ? new ArrayList<>() : new ArrayList<>(pcscfAddresses);
         mMtu = mMtuV4 = mMtuV6 = mtu;
         mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY;
+        mPduSessionId = PDU_SESSION_ID_NOT_SET;
     }
 
-    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,
-            @HandoverFailureMode int handoverFailureMode) {
+            @HandoverFailureMode int handoverFailureMode, int pduSessionId) {
         mCause = cause;
         mSuggestedRetryTime = suggestedRetryTime;
         mId = id;
@@ -195,13 +208,14 @@
         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();
@@ -218,6 +232,7 @@
         mMtuV4 = source.readInt();
         mMtuV6 = source.readInt();
         mHandoverFailureMode = source.readInt();
+        mPduSessionId = source.readInt();
     }
 
     /**
@@ -228,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.
@@ -314,6 +343,13 @@
         return mHandoverFailureMode;
     }
 
+    /**
+     * @return The pdu session id
+     */
+    public int getPduSessionId() {
+        return mPduSessionId;
+    }
+
     @NonNull
     @Override
     public String toString() {
@@ -333,6 +369,7 @@
            .append(" mtuV4=").append(getMtuV4())
            .append(" mtuV6=").append(getMtuV6())
            .append(" handoverFailureMode=").append(getHandoverFailureMode())
+           .append(" pduSessionId=").append(getPduSessionId())
            .append("}");
         return sb.toString();
     }
@@ -363,14 +400,15 @@
                 && mMtu == other.mMtu
                 && mMtuV4 == other.mMtuV4
                 && mMtuV6 == other.mMtuV6
-                && mHandoverFailureMode == other.mHandoverFailureMode;
+                && 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, mHandoverFailureMode);
+                mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId);
     }
 
     @Override
@@ -381,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);
@@ -394,6 +432,7 @@
         dest.writeInt(mMtuV4);
         dest.writeInt(mMtuV6);
         dest.writeInt(mHandoverFailureMode);
+        dest.writeInt(mPduSessionId);
     }
 
     public static final @android.annotation.NonNull Parcelable.Creator<DataCallResponse> CREATOR =
@@ -410,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.
      *
@@ -426,7 +484,7 @@
     public static final class Builder {
         private @DataFailureCause int mCause;
 
-        private int mSuggestedRetryTime;
+        private long mSuggestedRetryTime = RETRY_INTERVAL_UNDEFINED;
 
         private int mId;
 
@@ -452,6 +510,8 @@
 
         private @HandoverFailureMode int mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY;
 
+        private int mPduSessionId = PDU_SESSION_ID_NOT_SET;
+
         /**
          * Default constructor for Builder.
          */
@@ -474,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;
         }
 
@@ -621,6 +695,17 @@
         }
 
         /**
+         * 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.
@@ -628,7 +713,7 @@
         public @NonNull DataCallResponse build() {
             return new DataCallResponse(mCause, mSuggestedRetryTime, mId, mLinkStatus,
                     mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses,
-                    mPcscfAddresses, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode);
+                    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/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/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/telephony/java/android/telephony/ims/DelegateRegistrationState.aidl
similarity index 76%
copy from services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
copy to telephony/java/android/telephony/ims/DelegateRegistrationState.aidl
index 45e4c69..756ea92 100644
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ b/telephony/java/android/telephony/ims/DelegateRegistrationState.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright (c) 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,10 +14,6 @@
  * limitations under the License.
  */
 
-package android.net.wifi;
+package android.telephony.ims;
 
-/** @hide */
-parcelable WifiApiServiceInfo {
-    String name;
-    IBinder binder;
-}
+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/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/telephony/java/android/telephony/ims/DelegateRequest.aidl
similarity index 76%
copy from services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
copy to telephony/java/android/telephony/ims/DelegateRequest.aidl
index 45e4c69..60c990f 100644
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ b/telephony/java/android/telephony/ims/DelegateRequest.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright (c) 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,10 +14,6 @@
  * limitations under the License.
  */
 
-package android.net.wifi;
+package android.telephony.ims;
 
-/** @hide */
-parcelable WifiApiServiceInfo {
-    String name;
-    IBinder binder;
-}
+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/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/telephony/java/android/telephony/ims/FeatureTagState.aidl
similarity index 76%
copy from services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
copy to telephony/java/android/telephony/ims/FeatureTagState.aidl
index 45e4c69..bce5574 100644
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ b/telephony/java/android/telephony/ims/FeatureTagState.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright (c) 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,10 +14,6 @@
  * limitations under the License.
  */
 
-package android.net.wifi;
+package android.telephony.ims;
 
-/** @hide */
-parcelable WifiApiServiceInfo {
-    String name;
-    IBinder binder;
-}
+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 3f9c8d2..1c2cac2 100644
--- a/telephony/java/android/telephony/ims/ImsCallForwardInfo.java
+++ b/telephony/java/android/telephony/ims/ImsCallForwardInfo.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -128,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 47a0ab6..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
@@ -356,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;
 
     /**
@@ -444,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>
@@ -467,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 */
@@ -682,6 +690,7 @@
         out.writeBoolean(mHasKnownUserIntentEmergency);
         out.writeInt(mRestrictCause);
         out.writeInt(mCallerNumberVerificationStatus);
+        out.writeArray(mAcceptedRtpHeaderExtensionTypes.toArray());
     }
 
     private void readFromParcel(Parcel in) {
@@ -696,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);
@@ -823,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:
@@ -1085,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 2fdd195..86bb5d9 100644
--- a/telephony/java/android/telephony/ims/ImsCallSessionListener.java
+++ b/telephony/java/android/telephony/ims/ImsCallSessionListener.java
@@ -28,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.
@@ -683,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/ImsExternalCallState.java b/telephony/java/android/telephony/ims/ImsExternalCallState.java
index fdf636c..c663e39 100644
--- a/telephony/java/android/telephony/ims/ImsExternalCallState.java
+++ b/telephony/java/android/telephony/ims/ImsExternalCallState.java
@@ -49,8 +49,7 @@
     public static final int CALL_STATE_TERMINATED = 2;
 
     /**@hide*/
-    @IntDef(flag = true,
-            value = {
+    @IntDef(value = {
                     CALL_STATE_CONFIRMED,
                     CALL_STATE_TERMINATED
             },
@@ -59,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 a4f2a31..d1a893f 100644
--- a/telephony/java/android/telephony/ims/ImsMmTelManager.java
+++ b/telephony/java/android/telephony/ims/ImsMmTelManager.java
@@ -29,6 +29,7 @@
 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;
@@ -213,6 +214,7 @@
     }
 
     private final int mSubId;
+    private final BinderCacheManager<ITelephony> mBinderCache;
 
     /**
      * Create an instance of {@link ImsMmTelManager} for the subscription id specified.
@@ -242,7 +244,8 @@
             throw new IllegalArgumentException("Invalid subscription ID");
         }
 
-        return new ImsMmTelManager(subId);
+        return new ImsMmTelManager(subId, new BinderCacheManager<>(
+                ImsMmTelManager::getITelephonyInterface));
     }
 
     /**
@@ -250,8 +253,9 @@
      * @hide
      */
     @VisibleForTesting
-    public ImsMmTelManager(int subId) {
+    public ImsMmTelManager(int subId, BinderCacheManager<ITelephony> binderCache) {
         mSubId = subId;
+        mBinderCache = binderCache;
     }
 
     /**
@@ -1367,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 8b6dac8..0d8e5bc 100644
--- a/telephony/java/android/telephony/ims/ImsRcsManager.java
+++ b/telephony/java/android/telephony/ims/ImsRcsManager.java
@@ -26,8 +26,10 @@
 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.TelephonyFrameworkInitializer;
 import android.telephony.ims.aidl.IImsCapabilityCallback;
@@ -149,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;
     }
 
     /**
@@ -194,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);
         }
@@ -329,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",
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/ImsSsData.java b/telephony/java/android/telephony/ims/ImsSsData.java
index fb8e5d3..868dea6a 100644
--- a/telephony/java/android/telephony/ims/ImsSsData.java
+++ b/telephony/java/android/telephony/ims/ImsSsData.java
@@ -72,7 +72,7 @@
 
 
     /**@hide*/
-    @IntDef(flag = true, prefix = {"SS_"}, value = {
+    @IntDef(prefix = {"SS_"}, value = {
             SS_ACTIVATION,
             SS_DEACTIVATION,
             SS_INTERROGATION,
@@ -89,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,
@@ -190,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 27b56b8..bc53b62 100644
--- a/telephony/java/android/telephony/ims/ImsSsInfo.java
+++ b/telephony/java/android/telephony/ims/ImsSsInfo.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;
 
@@ -155,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;
@@ -166,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 4aca48b..d924bae 100644
--- a/telephony/java/android/telephony/ims/ImsStreamMediaProfile.java
+++ b/telephony/java/android/telephony/ims/ImsStreamMediaProfile.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;
 
@@ -85,10 +86,10 @@
 
     // 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;
@@ -97,7 +98,7 @@
     /** @hide */
     public int mVideoQuality;
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public int mVideoDirection;
     // Rtt related information
     /** @hide */
@@ -168,7 +169,7 @@
     }
 
     /** @hide */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public ImsStreamMediaProfile() {
         mAudioQuality = AUDIO_QUALITY_NONE;
         mAudioDirection = DIRECTION_SEND_RECEIVE;
diff --git a/telephony/java/android/telephony/ims/ImsVideoCallProvider.java b/telephony/java/android/telephony/ims/ImsVideoCallProvider.java
index 2fca409..64bdcbb 100644
--- a/telephony/java/android/telephony/ims/ImsVideoCallProvider.java
+++ b/telephony/java/android/telephony/ims/ImsVideoCallProvider.java
@@ -19,6 +19,7 @@
 import android.annotation.SystemApi;
 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;
@@ -179,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/RcsContactUceCapability.java b/telephony/java/android/telephony/ims/RcsContactUceCapability.java
index d12a6ae..5848be8 100644
--- a/telephony/java/android/telephony/ims/RcsContactUceCapability.java
+++ b/telephony/java/android/telephony/ims/RcsContactUceCapability.java
@@ -105,10 +105,17 @@
     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 {
+    public static class OptionsBuilder extends RcsUcsCapabilityBuilder {
 
         private final RcsContactUceCapability mCapabilities;
 
@@ -155,6 +162,7 @@
         /**
          * @return the constructed instance.
          */
+        @Override
         public @NonNull RcsContactUceCapability build() {
             return mCapabilities;
         }
@@ -164,7 +172,7 @@
      * Builder to help construct {@link RcsContactUceCapability} instances when capabilities were
      * queried through a presence server.
      */
-    public static class PresenceBuilder {
+    public static class PresenceBuilder extends RcsUcsCapabilityBuilder {
 
         private final RcsContactUceCapability mCapabilities;
 
@@ -205,6 +213,7 @@
         /**
          * @return the RcsContactUceCapability instance.
          */
+        @Override
         public @NonNull RcsContactUceCapability build() {
             return mCapabilities;
         }
diff --git a/telephony/java/android/telephony/ims/RcsUceAdapter.java b/telephony/java/android/telephony/ims/RcsUceAdapter.java
index 0aeaecc..8d7742b 100644
--- a/telephony/java/android/telephony/ims/RcsUceAdapter.java
+++ b/telephony/java/android/telephony/ims/RcsUceAdapter.java
@@ -27,6 +27,7 @@
 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;
@@ -75,39 +76,46 @@
      * @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.
@@ -115,22 +123,32 @@
      */
     // 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 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_SERVER_UNAVAILABLE = 13;
+
     /**@hide*/
     @Retention(RetentionPolicy.SOURCE)
     @IntDef(prefix = "ERROR_", value = {
@@ -144,7 +162,8 @@
             ERROR_REQUEST_TOO_LARGE,
             ERROR_REQUEST_TIMEOUT,
             ERROR_INSUFFICIENT_MEMORY,
-            ERROR_LOST_NETWORK
+            ERROR_LOST_NETWORK,
+            ERROR_SERVER_UNAVAILABLE
     })
     public @interface ErrorCode {}
 
@@ -368,8 +387,10 @@
          * 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.
          */
-        void onError(@ErrorCode int errorCode);
+        void onError(@ErrorCode int errorCode, long retryAfterMilliseconds);
     }
 
     private final Context mContext;
@@ -450,10 +471,10 @@
                 }
             }
             @Override
-            public void onError(int errorCode) {
+            public void onError(int errorCode, long retryAfterMilliseconds) {
                 final long callingIdentity = Binder.clearCallingIdentity();
                 try {
-                    executor.execute(() -> c.onError(errorCode));
+                    executor.execute(() -> c.onError(errorCode, retryAfterMilliseconds));
                 } finally {
                     restoreCallingIdentity(callingIdentity);
                 }
@@ -463,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",
@@ -532,10 +555,10 @@
                 }
             }
             @Override
-            public void onError(int errorCode) {
+            public void onError(int errorCode, long retryAfterMilliseconds) {
                 final long callingIdentity = Binder.clearCallingIdentity();
                 try {
-                    executor.execute(() -> c.onError(errorCode));
+                    executor.execute(() -> c.onError(errorCode, retryAfterMilliseconds));
                 } finally {
                     restoreCallingIdentity(callingIdentity);
                 }
@@ -545,6 +568,8 @@
         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",
@@ -574,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);
@@ -621,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);
diff --git a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/telephony/java/android/telephony/ims/RtpHeaderExtension.aidl
similarity index 76%
copy from services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
copy to telephony/java/android/telephony/ims/RtpHeaderExtension.aidl
index 45e4c69..cbf79d3 100644
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ b/telephony/java/android/telephony/ims/RtpHeaderExtension.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright (c) 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,10 +14,6 @@
  * limitations under the License.
  */
 
-package android.net.wifi;
+package android.telephony.ims;
 
-/** @hide */
-parcelable WifiApiServiceInfo {
-    String name;
-    IBinder binder;
-}
+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/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/telephony/java/android/telephony/ims/RtpHeaderExtensionType.aidl
similarity index 76%
copy from services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
copy to telephony/java/android/telephony/ims/RtpHeaderExtensionType.aidl
index 45e4c69..3e62fff 100644
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ b/telephony/java/android/telephony/ims/RtpHeaderExtensionType.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright (c) 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,10 +14,6 @@
  * limitations under the License.
  */
 
-package android.net.wifi;
+package android.telephony.ims;
 
-/** @hide */
-parcelable WifiApiServiceInfo {
-    String name;
-    IBinder binder;
-}
+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/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.aidl
similarity index 76%
copy from services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
copy to telephony/java/android/telephony/ims/SipDelegateImsConfiguration.aidl
index 45e4c69..44ae1b1 100644
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ b/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright (c) 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,10 +14,6 @@
  * limitations under the License.
  */
 
-package android.net.wifi;
+package android.telephony.ims;
 
-/** @hide */
-parcelable WifiApiServiceInfo {
-    String name;
-    IBinder binder;
-}
+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
index 82c8a9c..2ec88ff 100644
--- a/telephony/java/android/telephony/ims/SipDelegateManager.java
+++ b/telephony/java/android/telephony/ims/SipDelegateManager.java
@@ -17,29 +17,229 @@
 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.IBinder;
 import android.os.RemoteException;
 import android.os.ServiceSpecificException;
+import android.telephony.BinderCacheManager;
 import android.telephony.CarrierConfigManager;
-import android.telephony.TelephonyFrameworkInitializer;
 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, which allow an IMS application to forward
- * SIP messages for the purposes of providing a single IMS registration to the carrier's IMS network
- * from multiple sources.
+ * 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
@@ -47,9 +247,11 @@
      * @hide
      */
     @VisibleForTesting
-    public SipDelegateManager(Context context, int subId) {
+    public SipDelegateManager(Context context, int subId,
+            BinderCacheManager<IImsRcsController> binderCache) {
         mContext = context;
         mSubId = subId;
+        mBinderCache = binderCache;
     }
 
     /**
@@ -69,7 +271,7 @@
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public boolean isSupported() throws ImsException {
         try {
-            IImsRcsController controller = getIImsRcsController();
+            IImsRcsController controller = mBinderCache.getBinder();
             if (controller == null) {
                 throw new ImsException("Telephony server is down",
                         ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
@@ -83,11 +285,91 @@
         }
     }
 
-    private IImsRcsController getIImsRcsController() {
-        IBinder binder = TelephonyFrameworkInitializer
-                .getTelephonyServiceManager()
-                .getTelephonyImsServiceRegisterer()
-                .get();
-        return IImsRcsController.Stub.asInterface(binder);
+    /**
+     * 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/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl b/telephony/java/android/telephony/ims/SipMessage.aidl
similarity index 76%
copy from services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
copy to telephony/java/android/telephony/ims/SipMessage.aidl
index 45e4c69..5140f8a 100644
--- a/services/wifi/java/android/net/wifi/WifiApiServiceInfo.aidl
+++ b/telephony/java/android/telephony/ims/SipMessage.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright (c) 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,10 +14,6 @@
  * limitations under the License.
  */
 
-package android.net.wifi;
+package android.telephony.ims;
 
-/** @hide */
-parcelable WifiApiServiceInfo {
-    String name;
-    IBinder binder;
-}
+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/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/IImsRcsController.aidl b/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl
index 8e84e93..c6d9a86 100644
--- a/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl
+++ b/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl
@@ -17,10 +17,15 @@
 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;
@@ -58,6 +63,10 @@
 
     // 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);
diff --git a/telephony/java/android/telephony/ims/aidl/IRcsUceControllerCallback.aidl b/telephony/java/android/telephony/ims/aidl/IRcsUceControllerCallback.aidl
index 0bd3e5e..0f627b9 100644
--- a/telephony/java/android/telephony/ims/aidl/IRcsUceControllerCallback.aidl
+++ b/telephony/java/android/telephony/ims/aidl/IRcsUceControllerCallback.aidl
@@ -26,5 +26,5 @@
 oneway interface IRcsUceControllerCallback {
     void onCapabilitiesReceived(in List<RcsContactUceCapability> contactCapabilities);
     void onComplete();
-    void onError(int errorCode);
+    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
index fe23343..3438587 100644
--- a/telephony/java/android/telephony/ims/aidl/ISipTransport.aidl
+++ b/telephony/java/android/telephony/ims/aidl/ISipTransport.aidl
@@ -16,9 +16,17 @@
 
 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}
  */
-interface ISipTransport {
+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
index 4deaba1..a141993 100644
--- a/telephony/java/android/telephony/ims/aidl/ISubscribeResponseCallback.aidl
+++ b/telephony/java/android/telephony/ims/aidl/ISubscribeResponseCallback.aidl
@@ -32,5 +32,5 @@
     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);
+    void onTerminated(in String reason, long retryAfterMilliseconds);
 }
diff --git a/telephony/java/android/telephony/ims/aidl/RcsSubscribeResponseAidlWrapper.java b/telephony/java/android/telephony/ims/aidl/RcsSubscribeResponseAidlWrapper.java
index 37588ed..1fb339c 100644
--- a/telephony/java/android/telephony/ims/aidl/RcsSubscribeResponseAidlWrapper.java
+++ b/telephony/java/android/telephony/ims/aidl/RcsSubscribeResponseAidlWrapper.java
@@ -86,9 +86,9 @@
     }
 
     @Override
-    public void onTerminated(String reason, String retryAfter) throws ImsException {
+    public void onTerminated(String reason, long retryAfterMilliseconds) throws ImsException {
         try {
-            mResponseBinder.onTerminated(reason, retryAfter);
+            mResponseBinder.onTerminated(reason, retryAfterMilliseconds);
         } 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/ImsFeature.java b/telephony/java/android/telephony/ims/feature/ImsFeature.java
index b0a7b62..96ca022 100644
--- a/telephony/java/android/telephony/ims/feature/ImsFeature.java
+++ b/telephony/java/android/telephony/ims/feature/ImsFeature.java
@@ -509,6 +509,7 @@
      * @return true if the capability is enabled, false otherwise.
      * @hide
      */
+    @SuppressWarnings("HiddenAbstractMethod")
     public abstract boolean queryCapabilityConfiguration(int capability, int radioTech);
 
     /**
@@ -547,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 d7b0e0f0..e570fb6 100644
--- a/telephony/java/android/telephony/ims/feature/MmTelFeature.java
+++ b/telephony/java/android/telephony/ims/feature/MmTelFeature.java
@@ -27,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;
@@ -37,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;
@@ -45,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.
@@ -93,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);
@@ -623,6 +640,24 @@
     }
 
     /**
+     * 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)
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 1cebdd5..a3a6cb8 100644
--- a/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java
@@ -26,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.
  *
@@ -277,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));
+        }
     };
 
     /**
@@ -636,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/ImsRegistrationImplBase.java b/telephony/java/android/telephony/ims/stub/ImsRegistrationImplBase.java
index 12abdd1..153d687 100644
--- a/telephony/java/android/telephony/ims/stub/ImsRegistrationImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/ImsRegistrationImplBase.java
@@ -17,6 +17,8 @@
 package android.telephony.ims.stub;
 
 import android.annotation.IntDef;
+import android.annotation.IntRange;
+import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.net.Uri;
 import android.os.RemoteException;
@@ -47,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
@@ -126,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/RcsCapabilityExchangeImplBase.java b/telephony/java/android/telephony/ims/stub/RcsCapabilityExchangeImplBase.java
index b5704bf..3a0fb6e 100644
--- a/telephony/java/android/telephony/ims/stub/RcsCapabilityExchangeImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/RcsCapabilityExchangeImplBase.java
@@ -250,7 +250,7 @@
          * 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;
+        void onTerminated(String reason, long retryAfterMilliseconds) throws ImsException;
     }
 
 
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
index b2b2914..1f74c09 100644
--- a/telephony/java/android/telephony/ims/stub/SipTransportImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/SipTransportImplBase.java
@@ -17,28 +17,76 @@
 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;
 
 /**
- * Manages the creation and destruction of SipDelegates in order to proxy SIP traffic to other
- * IMS applications in order to support IMS single registration.
+ * 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 ISipTransport mSipTransportImpl = new ISipTransport.Stub() {
-
-    };
+    private final ArrayList<SipDelegateAidlWrapper> mDelegates = new ArrayList<>();
 
     /**
      * Create an implementation of SipTransportImplBase.
      *
-     * @param executor The executor that remote calls from the framework should be called on.
+     * @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) {
@@ -49,6 +97,81 @@
     }
 
     /**
+     * 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
      */
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/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/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/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/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 7945636..69525a8 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;
@@ -96,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);
 
     /**
@@ -110,7 +111,7 @@
     /**
      * @deprecated Use {@link #isRadioOnForSubscriberWithFeature(int, String, String) instead
      */
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     boolean isRadioOnForSubscriber(int subId, String callingPackage);
 
     /**
@@ -190,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);
 
     /**
@@ -614,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);
 
     /**
@@ -656,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);
 
@@ -855,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);
@@ -1798,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}.
      *
@@ -2145,6 +2159,8 @@
     oneway void setSystemSelectionChannels(in List<RadioAccessSpecifier> specifiers,
             int subId, IBooleanConsumer resultCallback);
 
+    List<RadioAccessSpecifier> getSystemSelectionChannels(int subId);
+
     boolean isMvnoMatched(int subId, int mvnoType, String mvnoMatchData);
 
     /**
@@ -2216,4 +2232,26 @@
      * 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 4abf784..a2361a7 100644
--- a/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -513,10 +513,13 @@
     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_BEGIN_HANDOVER = 217;
+    int RIL_REQUEST_START_HANDOVER = 217;
     int RIL_REQUEST_CANCEL_HANDOVER = 218;
+    int RIL_REQUEST_GET_SYSTEM_SELECTION_CHANNELS = 219;
 
     /* Responses begin */
     int RIL_RESPONSE_ACKNOWLEDGEMENT = 800;
@@ -574,6 +577,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/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 11a83eb..6b7ea66 100644
--- a/tests/net/common/java/android/net/NetworkCapabilitiesTest.java
+++ b/tests/net/common/java/android/net/NetworkCapabilitiesTest.java
@@ -359,7 +359,7 @@
         assertFalse(nr.satisfiedByNetworkCapabilities(new NetworkCapabilities()));
     }
 
-    @Test
+    @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
diff --git a/tests/net/common/java/android/net/NetworkProviderTest.kt b/tests/net/common/java/android/net/NetworkProviderTest.kt
index dd3f5be..77e9f12 100644
--- a/tests/net/common/java/android/net/NetworkProviderTest.kt
+++ b/tests/net/common/java/android/net/NetworkProviderTest.kt
@@ -33,6 +33,9 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.Mockito.doReturn
+import org.mockito.Mockito.mock
+import org.mockito.Mockito.verifyNoMoreInteractions
 import java.util.UUID
 import kotlin.test.assertEquals
 import kotlin.test.assertNotEquals
@@ -87,8 +90,8 @@
         ) = seenEvents.poll(DEFAULT_TIMEOUT_MS) { it is T && predicate(it) }
     }
 
-    private fun createNetworkProvider(): TestNetworkProvider {
-        return TestNetworkProvider(context, mHandlerThread.looper)
+    private fun createNetworkProvider(ctx: Context = context): TestNetworkProvider {
+        return TestNetworkProvider(ctx, mHandlerThread.looper)
     }
 
     @Test
@@ -169,7 +172,12 @@
 
     @Test
     fun testDeclareNetworkRequestUnfulfillable() {
-        val provider = createNetworkProvider()
+        val mockContext = mock(Context::class.java)
+        val provider = createNetworkProvider(mockContext)
+        // ConnectivityManager not required at creation time
+        verifyNoMoreInteractions(mockContext)
+        doReturn(mCm).`when`(mockContext).getSystemService(Context.CONNECTIVITY_SERVICE)
+
         mCm.registerNetworkProvider(provider)
 
         val specifier = StringNetworkSpecifier(UUID.randomUUID().toString())
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/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt b/tests/net/integration/src/com/android/server/net/integrationtests/ConnectivityServiceIntegrationTest.kt
index dba1856e..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
@@ -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 85704d0..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) {
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/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java
index 3a46291..7a1cb25 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;
@@ -54,8 +56,10 @@
 import static android.net.NetworkCapabilities.NET_CAPABILITY_IMS;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_MMS;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY;
@@ -158,7 +162,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;
@@ -259,7 +263,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;
@@ -322,6 +329,7 @@
     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];
 
@@ -339,6 +347,7 @@
     private INetworkPolicyListener mPolicyListener;
     private WrappedMultinetworkPolicyTracker mPolicyTracker;
     private HandlerThread mAlarmManagerThread;
+    private TestNetIdManager mNetIdManager;
 
     @Mock IIpConnectivityMetrics mIpConnectivityMetrics;
     @Mock IpConnectivityMetrics.Logger mMetricsService;
@@ -617,12 +626,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.
@@ -1017,46 +1031,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) {
@@ -1064,21 +1070,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
@@ -1086,41 +1084,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
@@ -1133,18 +1166,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) {
@@ -1207,12 +1228,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),
                 }));
@@ -1277,7 +1300,7 @@
         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(mSystemProperties).when(deps).getSystemProperties();
         doReturn(mock(ProxyTracker.class)).when(deps).makeProxyTracker(any(), any());
@@ -1335,6 +1358,9 @@
             mEthernetNetworkAgent.disconnect();
             mEthernetNetworkAgent = null;
         }
+        mMockVpn.disconnect();
+        waitForIdle();
+
         FakeSettingsProvider.clearSettingsProvider();
 
         mCsHandlerThread.quitSafely();
@@ -3218,20 +3244,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());
     }
@@ -4808,13 +4826,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);
@@ -4825,9 +4882,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.
@@ -4835,32 +4890,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
@@ -4874,9 +4921,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);
     }
 
@@ -5232,6 +5400,158 @@
     }
 
     @Test
+    public void testApplyUnderlyingCapabilities() throws Exception {
+        mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
+        mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
+        mCellNetworkAgent.connect(false /* validated */);
+        mWiFiNetworkAgent.connect(false /* validated */);
+
+        final NetworkCapabilities cellNc = new NetworkCapabilities()
+                .addTransportType(TRANSPORT_CELLULAR)
+                .addCapability(NET_CAPABILITY_INTERNET)
+                .addCapability(NET_CAPABILITY_NOT_CONGESTED)
+                .setLinkDownstreamBandwidthKbps(10);
+        final NetworkCapabilities wifiNc = new NetworkCapabilities()
+                .addTransportType(TRANSPORT_WIFI)
+                .addCapability(NET_CAPABILITY_INTERNET)
+                .addCapability(NET_CAPABILITY_NOT_METERED)
+                .addCapability(NET_CAPABILITY_NOT_ROAMING)
+                .addCapability(NET_CAPABILITY_NOT_CONGESTED)
+                .addCapability(NET_CAPABILITY_NOT_SUSPENDED)
+                .setLinkUpstreamBandwidthKbps(20);
+        mCellNetworkAgent.setNetworkCapabilities(cellNc, true /* sendToConnectivityService */);
+        mWiFiNetworkAgent.setNetworkCapabilities(wifiNc, true /* sendToConnectivityService */);
+        waitForIdle();
+
+        final Network mobile = mCellNetworkAgent.getNetwork();
+        final Network wifi = mWiFiNetworkAgent.getNetwork();
+
+        final NetworkCapabilities initialCaps = new NetworkCapabilities();
+        initialCaps.addCapability(NET_CAPABILITY_INTERNET);
+        initialCaps.removeCapability(NET_CAPABILITY_NOT_VPN);
+
+        final NetworkCapabilities withNoUnderlying = new NetworkCapabilities();
+        withNoUnderlying.addCapability(NET_CAPABILITY_INTERNET);
+        withNoUnderlying.addCapability(NET_CAPABILITY_NOT_CONGESTED);
+        withNoUnderlying.addCapability(NET_CAPABILITY_NOT_ROAMING);
+        withNoUnderlying.addCapability(NET_CAPABILITY_NOT_SUSPENDED);
+        withNoUnderlying.addTransportType(TRANSPORT_VPN);
+        withNoUnderlying.removeCapability(NET_CAPABILITY_NOT_VPN);
+
+        final NetworkCapabilities withMobileUnderlying = new NetworkCapabilities(withNoUnderlying);
+        withMobileUnderlying.addTransportType(TRANSPORT_CELLULAR);
+        withMobileUnderlying.removeCapability(NET_CAPABILITY_NOT_ROAMING);
+        withMobileUnderlying.removeCapability(NET_CAPABILITY_NOT_SUSPENDED);
+        withMobileUnderlying.setLinkDownstreamBandwidthKbps(10);
+
+        final NetworkCapabilities withWifiUnderlying = new NetworkCapabilities(withNoUnderlying);
+        withWifiUnderlying.addTransportType(TRANSPORT_WIFI);
+        withWifiUnderlying.addCapability(NET_CAPABILITY_NOT_METERED);
+        withWifiUnderlying.setLinkUpstreamBandwidthKbps(20);
+
+        final NetworkCapabilities withWifiAndMobileUnderlying =
+                new NetworkCapabilities(withNoUnderlying);
+        withWifiAndMobileUnderlying.addTransportType(TRANSPORT_CELLULAR);
+        withWifiAndMobileUnderlying.addTransportType(TRANSPORT_WIFI);
+        withWifiAndMobileUnderlying.removeCapability(NET_CAPABILITY_NOT_METERED);
+        withWifiAndMobileUnderlying.removeCapability(NET_CAPABILITY_NOT_ROAMING);
+        withWifiAndMobileUnderlying.setLinkDownstreamBandwidthKbps(10);
+        withWifiAndMobileUnderlying.setLinkUpstreamBandwidthKbps(20);
+
+        NetworkCapabilities caps = new NetworkCapabilities(initialCaps);
+        final boolean notDeclaredMetered = false;
+        mService.applyUnderlyingCapabilities(new Network[]{}, caps, notDeclaredMetered);
+        assertEquals(withNoUnderlying, caps);
+
+        caps = new NetworkCapabilities(initialCaps);
+        mService.applyUnderlyingCapabilities(new Network[]{null}, caps, notDeclaredMetered);
+        assertEquals(withNoUnderlying, caps);
+
+        caps = new NetworkCapabilities(initialCaps);
+        mService.applyUnderlyingCapabilities(new Network[]{mobile}, caps, notDeclaredMetered);
+        assertEquals(withMobileUnderlying, caps);
+
+        mService.applyUnderlyingCapabilities(new Network[]{wifi}, caps, notDeclaredMetered);
+        assertEquals(withWifiUnderlying, caps);
+
+        final boolean isDeclaredMetered = true;
+        withWifiUnderlying.removeCapability(NET_CAPABILITY_NOT_METERED);
+        caps = new NetworkCapabilities(initialCaps);
+        mService.applyUnderlyingCapabilities(new Network[]{wifi}, caps, isDeclaredMetered);
+        assertEquals(withWifiUnderlying, caps);
+
+        caps = new NetworkCapabilities(initialCaps);
+        mService.applyUnderlyingCapabilities(new Network[]{mobile, wifi}, caps, isDeclaredMetered);
+        assertEquals(withWifiAndMobileUnderlying, caps);
+
+        withWifiUnderlying.addCapability(NET_CAPABILITY_NOT_METERED);
+        caps = new NetworkCapabilities(initialCaps);
+        mService.applyUnderlyingCapabilities(new Network[]{null, mobile, null, wifi},
+                caps, notDeclaredMetered);
+        assertEquals(withWifiAndMobileUnderlying, caps);
+
+        caps = new NetworkCapabilities(initialCaps);
+        mService.applyUnderlyingCapabilities(new Network[]{null, mobile, null, wifi},
+                caps, notDeclaredMetered);
+        assertEquals(withWifiAndMobileUnderlying, caps);
+
+        mService.applyUnderlyingCapabilities(null, caps, notDeclaredMetered);
+        assertEquals(withWifiUnderlying, caps);
+    }
+
+    @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();
 
@@ -5265,42 +5585,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
@@ -5308,19 +5618,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();
 
@@ -5330,13 +5639,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);
@@ -5358,20 +5667,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);
@@ -5390,21 +5692,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);
@@ -5422,44 +5717,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);
     }
 
@@ -5481,21 +5768,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));
@@ -5517,18 +5798,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));
@@ -5545,7 +5819,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)
@@ -5559,7 +5833,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)
@@ -5569,7 +5843,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)
@@ -5577,27 +5851,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)
@@ -5607,7 +5881,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)
@@ -5620,7 +5894,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)
@@ -5634,7 +5908,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)
@@ -5645,14 +5919,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));
@@ -5673,18 +5947,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));
@@ -5696,7 +5963,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));
@@ -5706,7 +5973,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));
@@ -5718,7 +5985,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));
@@ -5727,6 +5994,86 @@
     }
 
     @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));
+
+        // Change the VPN's capabilities somehow (specifically, disconnect wifi).
+        mWiFiNetworkAgent.disconnect();
+        callback.expectCallback(CallbackEntry.LOST, mWiFiNetworkAgent);
+        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, and that the capability
+        // change made just before that (i.e., loss of TRANSPORT_WIFI) is preserved.
+        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());
@@ -5761,18 +6108,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());
@@ -5783,7 +6122,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());
@@ -5801,7 +6140,6 @@
         // VPN without any underlying networks is treated as metered.
         assertTrue(mCm.isActiveNetworkMetered());
 
-        vpnNetworkAgent.disconnect();
         mMockVpn.disconnect();
     }
 
@@ -5822,18 +6160,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() });
@@ -5873,7 +6203,6 @@
         // VPN without underlying networks is treated as metered.
         assertTrue(mCm.isActiveNetworkMetered());
 
-        vpnNetworkAgent.disconnect();
         mMockVpn.disconnect();
     }
 
@@ -5888,17 +6217,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);
@@ -5922,7 +6245,7 @@
 
         assertTrue(mCm.isActiveNetworkMetered());
 
-        vpnNetworkAgent.disconnect();
+        mMockVpn.disconnect();
     }
 
     @Test
@@ -6084,12 +6407,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;
     }
 
@@ -6180,8 +6504,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);
@@ -6230,7 +6554,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 */,
@@ -6279,8 +6604,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));
 
         // Stopping prefix discovery causes netd to tell us that the NAT64 prefix is gone.
         mService.mNetdEventCallback.onNat64PrefixEvent(cellNetId, false /* added */,
@@ -6320,6 +6645,7 @@
         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();
@@ -6651,34 +6977,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.
@@ -6689,7 +7002,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()));
@@ -6704,17 +7017,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
@@ -6731,8 +7044,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());
@@ -6747,8 +7059,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());
@@ -6762,7 +7073,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
@@ -6774,7 +7085,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)
@@ -6787,7 +7098,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());
@@ -6798,7 +7109,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());
@@ -6813,8 +7124,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);
@@ -6823,7 +7133,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);
@@ -6964,7 +7274,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();
@@ -7045,19 +7355,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) {
@@ -7237,22 +7534,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(
@@ -7273,8 +7571,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(
@@ -7477,4 +7773,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/NetworkManagementServiceTest.java b/tests/net/java/com/android/server/NetworkManagementServiceTest.java
index 968b307..ea763d2 100644
--- a/tests/net/java/com/android/server/NetworkManagementServiceTest.java
+++ b/tests/net/java/com/android/server/NetworkManagementServiceTest.java
@@ -16,6 +16,12 @@
 
 package com.android.server;
 
+import static android.util.DebugUtils.valueToString;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
@@ -29,15 +35,19 @@
 import android.net.INetd;
 import android.net.INetdUnsolicitedEventListener;
 import android.net.LinkAddress;
+import android.net.NetworkPolicyManager;
 import android.os.BatteryStats;
 import android.os.Binder;
 import android.os.IBinder;
+import android.os.Process;
+import android.os.RemoteException;
 import android.test.suitebuilder.annotation.SmallTest;
+import android.util.ArrayMap;
 
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.internal.app.IBatteryStats;
-import com.android.server.NetworkManagementService.SystemServices;
+import com.android.server.NetworkManagementService.Dependencies;
 import com.android.server.net.BaseNetworkObserver;
 
 import org.junit.After;
@@ -49,13 +59,14 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.util.function.BiFunction;
+
 /**
  * Tests for {@link NetworkManagementService}.
  */
 @RunWith(AndroidJUnit4.class)
 @SmallTest
 public class NetworkManagementServiceTest {
-
     private NetworkManagementService mNMService;
 
     @Mock private Context mContext;
@@ -66,7 +77,9 @@
     @Captor
     private ArgumentCaptor<INetdUnsolicitedEventListener> mUnsolListenerCaptor;
 
-    private final SystemServices mServices = new SystemServices() {
+    private final MockDependencies mDeps = new MockDependencies();
+
+    private final class MockDependencies extends Dependencies {
         @Override
         public IBinder getService(String name) {
             switch (name) {
@@ -76,14 +89,21 @@
                     throw new UnsupportedOperationException("Unknown service " + name);
             }
         }
+
         @Override
         public void registerLocalService(NetworkManagementInternal nmi) {
         }
+
         @Override
         public INetd getNetd() {
             return mNetdService;
         }
-    };
+
+        @Override
+        public int getCallingUid() {
+            return Process.SYSTEM_UID;
+        }
+    }
 
     @Before
     public void setUp() throws Exception {
@@ -91,7 +111,7 @@
         doNothing().when(mNetdService)
                 .registerUnsolicitedEventListener(mUnsolListenerCaptor.capture());
         // Start the service and wait until it connects to our socket.
-        mNMService = NetworkManagementService.create(mContext, mServices);
+        mNMService = NetworkManagementService.create(mContext, mDeps);
     }
 
     @After
@@ -192,4 +212,105 @@
         // Make sure nothing else was called.
         verifyNoMoreInteractions(observer);
     }
+
+    @Test
+    public void testFirewallEnabled() {
+        mNMService.setFirewallEnabled(true);
+        assertTrue(mNMService.isFirewallEnabled());
+
+        mNMService.setFirewallEnabled(false);
+        assertFalse(mNMService.isFirewallEnabled());
+    }
+
+    private static final int TEST_UID = 111;
+
+    @Test
+    public void testNetworkRestrictedDefault() {
+        assertFalse(mNMService.isNetworkRestricted(TEST_UID));
+    }
+
+    @Test
+    public void testMeteredNetworkRestrictions() throws RemoteException {
+        // Make sure the mocked netd method returns true.
+        doReturn(true).when(mNetdService).bandwidthEnableDataSaver(anyBoolean());
+
+        // Restrict usage of mobile data in background
+        mNMService.setUidMeteredNetworkDenylist(TEST_UID, true);
+        assertTrue("Should be true since mobile data usage is restricted",
+                mNMService.isNetworkRestricted(TEST_UID));
+
+        mNMService.setDataSaverModeEnabled(true);
+        verify(mNetdService).bandwidthEnableDataSaver(true);
+
+        mNMService.setUidMeteredNetworkDenylist(TEST_UID, false);
+        assertTrue("Should be true since data saver is on and the uid is not allowlisted",
+                mNMService.isNetworkRestricted(TEST_UID));
+
+        mNMService.setUidMeteredNetworkAllowlist(TEST_UID, true);
+        assertFalse("Should be false since data saver is on and the uid is allowlisted",
+                mNMService.isNetworkRestricted(TEST_UID));
+
+        // remove uid from allowlist and turn datasaver off again
+        mNMService.setUidMeteredNetworkAllowlist(TEST_UID, false);
+        mNMService.setDataSaverModeEnabled(false);
+        verify(mNetdService).bandwidthEnableDataSaver(false);
+        assertFalse("Network should not be restricted when data saver is off",
+                mNMService.isNetworkRestricted(TEST_UID));
+    }
+
+    @Test
+    public void testFirewallChains() {
+        final ArrayMap<Integer, ArrayMap<Integer, Boolean>> expected = new ArrayMap<>();
+        // Dozable chain
+        final ArrayMap<Integer, Boolean> isRestrictedForDozable = new ArrayMap<>();
+        isRestrictedForDozable.put(NetworkPolicyManager.FIREWALL_RULE_DEFAULT, true);
+        isRestrictedForDozable.put(INetd.FIREWALL_RULE_ALLOW, false);
+        isRestrictedForDozable.put(INetd.FIREWALL_RULE_DENY, true);
+        expected.put(INetd.FIREWALL_CHAIN_DOZABLE, isRestrictedForDozable);
+        // Powersaver chain
+        final ArrayMap<Integer, Boolean> isRestrictedForPowerSave = new ArrayMap<>();
+        isRestrictedForPowerSave.put(NetworkPolicyManager.FIREWALL_RULE_DEFAULT, true);
+        isRestrictedForPowerSave.put(INetd.FIREWALL_RULE_ALLOW, false);
+        isRestrictedForPowerSave.put(INetd.FIREWALL_RULE_DENY, true);
+        expected.put(INetd.FIREWALL_CHAIN_POWERSAVE, isRestrictedForPowerSave);
+        // Standby chain
+        final ArrayMap<Integer, Boolean> isRestrictedForStandby = new ArrayMap<>();
+        isRestrictedForStandby.put(NetworkPolicyManager.FIREWALL_RULE_DEFAULT, false);
+        isRestrictedForStandby.put(INetd.FIREWALL_RULE_ALLOW, false);
+        isRestrictedForStandby.put(INetd.FIREWALL_RULE_DENY, true);
+        expected.put(INetd.FIREWALL_CHAIN_STANDBY, isRestrictedForStandby);
+        // Restricted mode chain
+        final ArrayMap<Integer, Boolean> isRestrictedForRestrictedMode = new ArrayMap<>();
+        isRestrictedForRestrictedMode.put(NetworkPolicyManager.FIREWALL_RULE_DEFAULT, true);
+        isRestrictedForRestrictedMode.put(INetd.FIREWALL_RULE_ALLOW, false);
+        isRestrictedForRestrictedMode.put(INetd.FIREWALL_RULE_DENY, true);
+        expected.put(INetd.FIREWALL_CHAIN_RESTRICTED, isRestrictedForRestrictedMode);
+
+        final int[] chains = {
+                INetd.FIREWALL_CHAIN_STANDBY,
+                INetd.FIREWALL_CHAIN_POWERSAVE,
+                INetd.FIREWALL_CHAIN_DOZABLE,
+                INetd.FIREWALL_CHAIN_RESTRICTED
+        };
+        final int[] states = {
+                INetd.FIREWALL_RULE_ALLOW,
+                INetd.FIREWALL_RULE_DENY,
+                NetworkPolicyManager.FIREWALL_RULE_DEFAULT
+        };
+        BiFunction<Integer, Integer, String> errorMsg = (chain, state) -> {
+            return String.format("Unexpected value for chain: %s and state: %s",
+                    valueToString(INetd.class, "FIREWALL_CHAIN_", chain),
+                    valueToString(INetd.class, "FIREWALL_RULE_", state));
+        };
+        for (int chain : chains) {
+            final ArrayMap<Integer, Boolean> expectedValues = expected.get(chain);
+            mNMService.setFirewallChainEnabled(chain, true);
+            for (int state : states) {
+                mNMService.setFirewallUidRule(chain, TEST_UID, state);
+                assertEquals(errorMsg.apply(chain, state),
+                        expectedValues.get(state), mNMService.isNetworkRestricted(TEST_UID));
+            }
+            mNMService.setFirewallChainEnabled(chain, false);
+        }
+    }
 }
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/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 2fa0914..337507a 100644
--- a/tests/net/java/com/android/server/connectivity/VpnTest.java
+++ b/tests/net/java/com/android/server/connectivity/VpnTest.java
@@ -21,15 +21,6 @@
 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;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED;
-import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
-import static android.net.NetworkCapabilities.TRANSPORT_VPN;
-import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
 
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
@@ -41,6 +32,7 @@
 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;
@@ -86,10 +78,10 @@
 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;
@@ -100,6 +92,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;
@@ -223,6 +216,8 @@
                 .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(
@@ -241,7 +236,7 @@
         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
@@ -589,7 +584,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);
@@ -617,103 +612,6 @@
         order.verify(mNotificationManager).cancel(anyString(), anyInt());
     }
 
-    @Test
-    public void testCapabilities() {
-        final Vpn vpn = createVpn(primaryUser.id);
-        setMockedUsers(primaryUser);
-
-        final Network mobile = new Network(1);
-        final Network wifi = new Network(2);
-
-        final Map<Network, NetworkCapabilities> networks = new HashMap<>();
-        networks.put(
-                mobile,
-                new NetworkCapabilities()
-                        .addTransportType(TRANSPORT_CELLULAR)
-                        .addCapability(NET_CAPABILITY_INTERNET)
-                        .addCapability(NET_CAPABILITY_NOT_CONGESTED)
-                        .setLinkDownstreamBandwidthKbps(10));
-        networks.put(
-                wifi,
-                new NetworkCapabilities()
-                        .addTransportType(TRANSPORT_WIFI)
-                        .addCapability(NET_CAPABILITY_INTERNET)
-                        .addCapability(NET_CAPABILITY_NOT_METERED)
-                        .addCapability(NET_CAPABILITY_NOT_ROAMING)
-                        .addCapability(NET_CAPABILITY_NOT_CONGESTED)
-                        .addCapability(NET_CAPABILITY_NOT_SUSPENDED)
-                        .setLinkUpstreamBandwidthKbps(20));
-        setMockedNetworks(networks);
-
-        final NetworkCapabilities caps = new NetworkCapabilities();
-
-        Vpn.applyUnderlyingCapabilities(
-                mConnectivityManager, new Network[] {}, caps, false /* isAlwaysMetered */);
-        assertTrue(caps.hasTransport(TRANSPORT_VPN));
-        assertFalse(caps.hasTransport(TRANSPORT_CELLULAR));
-        assertFalse(caps.hasTransport(TRANSPORT_WIFI));
-        assertEquals(LINK_BANDWIDTH_UNSPECIFIED, caps.getLinkDownstreamBandwidthKbps());
-        assertEquals(LINK_BANDWIDTH_UNSPECIFIED, caps.getLinkUpstreamBandwidthKbps());
-        assertFalse(caps.hasCapability(NET_CAPABILITY_NOT_METERED));
-        assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_ROAMING));
-        assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_CONGESTED));
-        assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_SUSPENDED));
-
-        Vpn.applyUnderlyingCapabilities(
-                mConnectivityManager,
-                new Network[] {mobile},
-                caps,
-                false /* isAlwaysMetered */);
-        assertTrue(caps.hasTransport(TRANSPORT_VPN));
-        assertTrue(caps.hasTransport(TRANSPORT_CELLULAR));
-        assertFalse(caps.hasTransport(TRANSPORT_WIFI));
-        assertEquals(10, caps.getLinkDownstreamBandwidthKbps());
-        assertEquals(LINK_BANDWIDTH_UNSPECIFIED, caps.getLinkUpstreamBandwidthKbps());
-        assertFalse(caps.hasCapability(NET_CAPABILITY_NOT_METERED));
-        assertFalse(caps.hasCapability(NET_CAPABILITY_NOT_ROAMING));
-        assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_CONGESTED));
-        assertFalse(caps.hasCapability(NET_CAPABILITY_NOT_SUSPENDED));
-
-        Vpn.applyUnderlyingCapabilities(
-                mConnectivityManager, new Network[] {wifi}, caps, false /* isAlwaysMetered */);
-        assertTrue(caps.hasTransport(TRANSPORT_VPN));
-        assertFalse(caps.hasTransport(TRANSPORT_CELLULAR));
-        assertTrue(caps.hasTransport(TRANSPORT_WIFI));
-        assertEquals(LINK_BANDWIDTH_UNSPECIFIED, caps.getLinkDownstreamBandwidthKbps());
-        assertEquals(20, caps.getLinkUpstreamBandwidthKbps());
-        assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_METERED));
-        assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_ROAMING));
-        assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_CONGESTED));
-        assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_SUSPENDED));
-
-        Vpn.applyUnderlyingCapabilities(
-                mConnectivityManager, new Network[] {wifi}, caps, true /* isAlwaysMetered */);
-        assertTrue(caps.hasTransport(TRANSPORT_VPN));
-        assertFalse(caps.hasTransport(TRANSPORT_CELLULAR));
-        assertTrue(caps.hasTransport(TRANSPORT_WIFI));
-        assertEquals(LINK_BANDWIDTH_UNSPECIFIED, caps.getLinkDownstreamBandwidthKbps());
-        assertEquals(20, caps.getLinkUpstreamBandwidthKbps());
-        assertFalse(caps.hasCapability(NET_CAPABILITY_NOT_METERED));
-        assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_ROAMING));
-        assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_CONGESTED));
-        assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_SUSPENDED));
-
-        Vpn.applyUnderlyingCapabilities(
-                mConnectivityManager,
-                new Network[] {mobile, wifi},
-                caps,
-                false /* isAlwaysMetered */);
-        assertTrue(caps.hasTransport(TRANSPORT_VPN));
-        assertTrue(caps.hasTransport(TRANSPORT_CELLULAR));
-        assertTrue(caps.hasTransport(TRANSPORT_WIFI));
-        assertEquals(10, caps.getLinkDownstreamBandwidthKbps());
-        assertEquals(20, caps.getLinkUpstreamBandwidthKbps());
-        assertFalse(caps.hasCapability(NET_CAPABILITY_NOT_METERED));
-        assertFalse(caps.hasCapability(NET_CAPABILITY_NOT_ROAMING));
-        assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_CONGESTED));
-        assertTrue(caps.hasCapability(NET_CAPABILITY_NOT_SUSPENDED));
-    }
-
     /**
      * The profile name should NOT change between releases for backwards compatibility
      *
@@ -729,26 +627,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.
@@ -759,8 +658,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 */);
         }
     }
 
@@ -768,11 +668,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) {
         }
@@ -780,10 +680,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
@@ -793,19 +693,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]);
@@ -821,7 +721,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);
@@ -844,7 +744,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);
@@ -867,7 +767,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());
@@ -877,14 +777,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());
@@ -892,7 +794,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
@@ -908,10 +811,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());
@@ -919,7 +825,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);
 
@@ -932,16 +838,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);
@@ -954,7 +862,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);
@@ -970,7 +878,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));
@@ -983,7 +891,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));
@@ -996,13 +904,13 @@
         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));
@@ -1027,7 +935,7 @@
         when(exception.getErrorType())
                 .thenReturn(IkeProtocolException.ERROR_TYPE_AUTHENTICATION_FAILED);
 
-        final Vpn vpn = startLegacyVpn(mVpnProfile);
+        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
@@ -1038,20 +946,20 @@
         ikeCb.onClosedExceptionally(exception);
 
         verify(mConnectivityManager, timeout(TEST_TIMEOUT_MS)).unregisterNetworkCallback(eq(cb));
-        assertEquals(DetailedState.FAILED, vpn.getNetworkInfo().getDetailedState());
+        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(mVpnProfile);
+        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(DetailedState.FAILED, vpn.getNetworkInfo().getDetailedState());
+        assertEquals(LegacyVpnInfo.STATE_FAILED, vpn.getLegacyVpnInfo().state);
     }
 
     private void setAndVerifyAlwaysOnPackage(Vpn vpn, int uid, boolean lockdownEnabled) {
@@ -1059,7 +967,7 @@
 
         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(
@@ -1090,8 +998,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
@@ -1108,7 +1015,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.
     }
@@ -1143,7 +1050,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
@@ -1277,8 +1184,13 @@
         doReturn(UserHandle.of(userId)).when(asUserContext).getUser();
         when(mContext.createContextAsUser(eq(UserHandle.of(userId)), anyInt()))
                 .thenReturn(asUserContext);
-        return new Vpn(Looper.myLooper(), mContext, new TestDeps(), mNetService,
+        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) {
@@ -1308,15 +1220,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/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/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/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/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/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/jarjar-rules.txt b/wifi/jarjar-rules.txt
index b489be2..75b5e72 100644
--- a/wifi/jarjar-rules.txt
+++ b/wifi/jarjar-rules.txt
@@ -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/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