Snap for 7802884 from c99811a1b31512635f51ef0007b8329b77a4c759 to mainline-tzdata3-release

Change-Id: I9cc0460a0c1f3c1f3696c02ba510a414ddca8684
diff --git a/OWNERS b/OWNERS
index 4025796..1d8d2ba 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,3 +1,15 @@
-calin@google.com
+dsrbecky@google.com
+hboehm@google.com
+jiakaiz@google.com
+lokeshgidra@google.com
+mast@google.com
+mingaleev@google.com
 ngeoffray@google.com
-*
+nikitai@google.com
+oth@google.com
+prb@google.com
+rpl@google.com
+skvadrik@google.com
+sorinbasca@google.com
+vichang@google.com
+vmarko@google.com
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 2d46a53..3c07c65 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -1128,6 +1128,57 @@
     },
     {
       "name": "art-run-test-963-default-range-smali[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_cmdline_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_compiler_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_dex2oat_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_dexdump_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_dexlist_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_dexoptanalyzer_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_libartbase_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_libartpalette_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_libdexfile_support_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_libdexfile_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_libprofile_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_oatdump_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_odrefresh_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_profman_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_runtime_compiler_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_runtime_tests[com.google.android.art.apex]"
+    },
+    {
+      "name": "art_standalone_sigchain_tests[com.google.android.art.apex]"
     }
   ],
   "presubmit": [
@@ -2264,6 +2315,57 @@
     },
     {
       "name": "art-run-test-963-default-range-smali"
+    },
+    {
+      "name": "art_standalone_cmdline_tests"
+    },
+    {
+      "name": "art_standalone_compiler_tests"
+    },
+    {
+      "name": "art_standalone_dex2oat_tests"
+    },
+    {
+      "name": "art_standalone_dexdump_tests"
+    },
+    {
+      "name": "art_standalone_dexlist_tests"
+    },
+    {
+      "name": "art_standalone_dexoptanalyzer_tests"
+    },
+    {
+      "name": "art_standalone_libartbase_tests"
+    },
+    {
+      "name": "art_standalone_libartpalette_tests"
+    },
+    {
+      "name": "art_standalone_libdexfile_support_tests"
+    },
+    {
+      "name": "art_standalone_libdexfile_tests"
+    },
+    {
+      "name": "art_standalone_libprofile_tests"
+    },
+    {
+      "name": "art_standalone_oatdump_tests"
+    },
+    {
+      "name": "art_standalone_odrefresh_tests"
+    },
+    {
+      "name": "art_standalone_profman_tests"
+    },
+    {
+      "name": "art_standalone_runtime_compiler_tests"
+    },
+    {
+      "name": "art_standalone_runtime_tests"
+    },
+    {
+      "name": "art_standalone_sigchain_tests"
     }
   ]
 }
diff --git a/build/apex/Android.bp b/build/apex/Android.bp
index d5cf74c..c5acc91 100644
--- a/build/apex/Android.bp
+++ b/build/apex/Android.bp
@@ -29,9 +29,9 @@
 art_runtime_base_binaries_both_on_device_first_on_host = [
     "dex2oat",
 ]
-// - Base requirements (binaries for which a 32-bit version is preferred on device, but for which
-//   only the "first" (likely 64-bit) version is required on host).
-art_runtime_base_binaries_prefer32_on_device_first_on_host = [
+// - Base requirements (binaries for which the "first" version is preferred on device
+//  (likely 64-bit) and on host).
+art_runtime_base_binaries_first_on_device_first_on_host = [
     "dexoptanalyzer",
     "odrefresh",
     "profman",
@@ -87,9 +87,9 @@
     "ziptool",
 ]
 
-// - Debug variants (binaries for which a 32-bit version is preferred on device, but for which
-//   only the "first" (likely 64-bit) version is required on host).
-art_runtime_debug_binaries_prefer32_on_device_first_on_host = [
+// - Debug variants (binaries for which the "first" version is preferred on device
+//  (likely 64-bit) and on host).
+art_runtime_debug_binaries_first_on_device_first_on_host = [
     "dexoptanalyzerd",
     "profmand",
 ]
@@ -249,11 +249,9 @@
             binaries: art_runtime_base_binaries_both +
                 art_runtime_base_binaries_both_on_device_first_on_host,
         },
-        prefer32: {
-            binaries: art_runtime_base_binaries_prefer32_on_device_first_on_host,
-        },
         first: {
-            binaries: art_tools_common_binaries +
+            binaries: art_runtime_base_binaries_first_on_device_first_on_host +
+                art_tools_common_binaries +
                 art_tools_device_only_binaries,
         },
     },
@@ -292,11 +290,9 @@
             binaries: art_tools_debug_binaries_both +
                 art_runtime_debug_binaries_both_on_device_first_on_host,
         },
-        prefer32: {
-            binaries: art_runtime_debug_binaries_prefer32_on_device_first_on_host,
-        },
         first: {
-            binaries: art_tools_debug_binaries +
+            binaries: art_runtime_debug_binaries_first_on_device_first_on_host +
+                art_tools_debug_binaries +
                 art_tools_debug_device_only_binaries,
         },
     },
@@ -395,9 +391,9 @@
                 art_tools_debug_binaries_both,
         },
         first: {
-            binaries: art_runtime_base_binaries_prefer32_on_device_first_on_host +
-                art_runtime_base_binaries_both_on_device_first_on_host +
-                art_runtime_debug_binaries_prefer32_on_device_first_on_host +
+            binaries: art_runtime_base_binaries_both_on_device_first_on_host +
+                art_runtime_base_binaries_first_on_device_first_on_host +
+                art_runtime_debug_binaries_first_on_device_first_on_host +
                 art_runtime_debug_binaries_both_on_device_first_on_host +
                 art_tools_common_binaries +
                 art_tools_debug_binaries + // Host APEX is always debug.
diff --git a/build/apex/art_apex_test.py b/build/apex/art_apex_test.py
index bb97416..4c090a2 100755
--- a/build/apex/art_apex_test.py
+++ b/build/apex/art_apex_test.py
@@ -481,7 +481,7 @@
     self._checker.check_native_library('libprofile')
     self._checker.check_native_library('libsigchain')
 
-    # Check java libraries for Managed Core Library.
+    # Check Java libraries for Managed Core Library.
     self._checker.check_java_library('apache-xml')
     self._checker.check_java_library('bouncycastle')
     self._checker.check_java_library('core-libart')
@@ -686,7 +686,7 @@
     self._checker.check_art_test_executable('art_sigchain_tests')
 
     # Check ART test (internal) libraries.
-    self._checker.check_native_library('libart-gtest')
+    self._checker.check_native_library('libartd-gtest')
     self._checker.check_native_library('libartd-simulator-container')
 
     # Check ART test tools.
@@ -903,7 +903,7 @@
       for flavor in [ FLAVOR_DEBUG, FLAVOR_TESTING, FLAVOR_RELEASE ]:
         flavor_tag = flavor
         # Special handling for the release flavor, whose name is no longer part of the Release ART
-        # APEX file name (`com.android.art.apex` / `com.android.art`).
+        # APEX file name (`com.android.art.capex` / `com.android.art`).
         if flavor == FLAVOR_RELEASE:
           flavor_tag = ''
         flavor_pattern = '*.%s*' % flavor_tag
@@ -1025,15 +1025,16 @@
   # TODO: Add host support.
   # TODO: Add support for flattened APEX packages.
   configs = [
-    {'name': 'com.android.art',         'flavor': FLAVOR_RELEASE, 'host': False},
-    {'name': 'com.android.art.debug',   'flavor': FLAVOR_DEBUG,   'host': False},
-    {'name': 'com.android.art.testing', 'flavor': FLAVOR_TESTING, 'host': False},
+    {'name': 'com.android.art.capex',         'flavor': FLAVOR_RELEASE, 'host': False},
+    {'name': 'com.android.art.debug.capex',   'flavor': FLAVOR_DEBUG,   'host': False},
+    # Note: The Testing ART APEX is not a Compressed APEX.
+    {'name': 'com.android.art.testing.apex',  'flavor': FLAVOR_TESTING, 'host': False},
   ]
 
   for config in configs:
     logging.info(config['name'])
     # TODO: Host will need different path.
-    test_args.apex = '%s/system/apex/%s.apex' % (product_out, config['name'])
+    test_args.apex = '%s/system/apex/%s' % (product_out, config['name'])
     if not os.path.exists(test_args.apex):
       failed = True
       logging.error("Cannot find APEX %s. Please build it first.", test_args.apex)
diff --git a/build/apex/manifest-art.json b/build/apex/manifest-art.json
index 4bbd03e..7d31ade 100644
--- a/build/apex/manifest-art.json
+++ b/build/apex/manifest-art.json
@@ -1,14 +1,10 @@
 {
   "name": "com.android.art",
-  "version": 1,
+  "version": 319999900,
   "provideNativeLibs": [
     "libjdwp.so"
   ],
   "requireNativeLibs": [
-    "libicu.so",
-    "libicuuc.so",
-    "libicui18n.so",
-    "libicu_jni.so",
-    "libneuralnetworks.so"
+    "libicu_jni.so"
   ]
 }
diff --git a/build/apex/runtests.sh b/build/apex/runtests.sh
index 5911288..232daa3 100755
--- a/build/apex/runtests.sh
+++ b/build/apex/runtests.sh
@@ -41,7 +41,12 @@
 [[ -n "$ANDROID_PRODUCT_OUT" ]] || setup_die
 [[ -n "$ANDROID_HOST_OUT" ]] || setup_die
 
-flattened_apex_p=$($ANDROID_BUILD_TOP/build/soong/soong_ui.bash --dumpvar-mode TARGET_FLATTEN_APEX)\
+flattened_apex_p=$($ANDROID_BUILD_TOP/build/soong/soong_ui.bash \
+    --dumpvar-mode TARGET_FLATTEN_APEX) \
+  || setup_die
+
+compressed_apex_p=$($ANDROID_BUILD_TOP/build/soong/soong_ui.bash \
+    --dumpvar-mode PRODUCT_COMPRESSED_APEX) \
   || setup_die
 
 # Switch the build system to unbundled mode in the reduced manifest branch.
@@ -180,7 +185,12 @@
       apex_path="$ANDROID_PRODUCT_OUT/system/apex/${apex_module}"
       art_apex_test_args="$art_apex_test_args --flattened"
     else
-      apex_path="$ANDROID_PRODUCT_OUT/system/apex/${apex_module}.apex"
+      # Note: The Testing ART APEX is never built as a Compressed APEX.
+      if $compressed_apex_p && [[ $apex_module != *.testing ]]; then
+        apex_path="$ANDROID_PRODUCT_OUT/system/apex/${apex_module}.capex"
+      else
+        apex_path="$ANDROID_PRODUCT_OUT/system/apex/${apex_module}.apex"
+      fi
     fi
     if $have_deapexer_p; then
       art_apex_test_args="$art_apex_test_args --deapexer $ANDROID_HOST_OUT/bin/deapexer"
diff --git a/build/apex/test_apex_manifest.json b/build/apex/test_apex_manifest.json
index a264d7a..ee6dacb 100644
--- a/build/apex/test_apex_manifest.json
+++ b/build/apex/test_apex_manifest.json
@@ -2,29 +2,9 @@
   "name": "com.android.art",
   "version": 2147483647,
   "provideNativeLibs": [
-    "libandroidio.so",
-    "libdexfile_external.so",
-    "libdexfiled_external.so",
-    "libjdwp.so",
-    "libnativebridge.so",
-    "libnativehelper.so",
-    "libnativeloader.so",
-    "libsigchain.so"
+    "libjdwp.so"
   ],
   "requireNativeLibs": [
-    "heapprofd_client_api.so",
-    "libadbconnection_client.so",
-    "libc.so",
-    "libdl.so",
-    "libdl_android.so",
-    "libicu.so",
-    "libicuuc.so",
-    "libicui18n.so",
-    "libicu_jni.so",
-    "liblog.so",
-    "libm.so",
-    "libneuralnetworks.so",
-    "libstatssocket.so",
-    "libz.so"
+    "libicu_jni.so"
   ]
 }
diff --git a/build/boot/Android.bp b/build/boot/Android.bp
index d549d84..16b6d95 100644
--- a/build/boot/Android.bp
+++ b/build/boot/Android.bp
@@ -43,8 +43,8 @@
     },
     core_platform_api: {
         stub_libs: [
-            // Core platform stubs for all the non-coverage contents.
-            "legacy.art.module.platform.api",
+            // Core platform (aka. module_lib) stubs for all the non-coverage contents.
+            "art.module.public.api.stubs.module_lib",
         ],
     },
 
diff --git a/build/boot/boot-image-profile.txt b/build/boot/boot-image-profile.txt
index 9eb32dd..5111acf 100644
--- a/build/boot/boot-image-profile.txt
+++ b/build/boot/boot-image-profile.txt
@@ -14,30 +14,33 @@
 # limitations under the License.
 #
 HSPLandroid/compat/Compatibility;->isChangeEnabled(J)Z+]Landroid/compat/Compatibility$BehaviorChangeDelegate;Landroid/app/AppCompatCallbacks;
+HSPLandroid/compat/Compatibility;->setBehaviorChangeDelegate(Landroid/compat/Compatibility$BehaviorChangeDelegate;)V
 HSPLandroid/system/ErrnoException;-><init>(Ljava/lang/String;I)V
 HSPLandroid/system/ErrnoException;->getMessage()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Llibcore/io/Os;missing_types
 HSPLandroid/system/ErrnoException;->rethrowAsIOException()Ljava/io/IOException;+]Ljava/io/IOException;Ljava/io/IOException;]Landroid/system/ErrnoException;Landroid/system/ErrnoException;
 HSPLandroid/system/GaiException;-><init>(Ljava/lang/String;I)V
+HSPLandroid/system/GaiException;->getMessage()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;
 HSPLandroid/system/GaiException;->rethrowAsUnknownHostException(Ljava/lang/String;)Ljava/net/UnknownHostException;+]Ljava/net/UnknownHostException;Ljava/net/UnknownHostException;
 HSPLandroid/system/Int32Ref;-><init>(I)V
 HSPLandroid/system/Os;->accept(Ljava/io/FileDescriptor;Ljava/net/InetSocketAddress;)Ljava/io/FileDescriptor;
 HSPLandroid/system/Os;->accept(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)Ljava/io/FileDescriptor;
-HSPLandroid/system/Os;->bind(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V
+HSPLandroid/system/Os;->bind(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;
 HSPLandroid/system/Os;->capget(Landroid/system/StructCapUserHeader;)[Landroid/system/StructCapUserData;
 HSPLandroid/system/Os;->chmod(Ljava/lang/String;I)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Landroid/app/ActivityThread$AndroidOs;
 HSPLandroid/system/Os;->close(Ljava/io/FileDescriptor;)V+]Llibcore/io/Os;missing_types
-HSPLandroid/system/Os;->fcntlInt(Ljava/io/FileDescriptor;II)I+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;
+HSPLandroid/system/Os;->fcntlInt(Ljava/io/FileDescriptor;II)I+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Landroid/app/ActivityThread$AndroidOs;
 HSPLandroid/system/Os;->fdatasync(Ljava/io/FileDescriptor;)V+]Llibcore/io/Os;missing_types
-HSPLandroid/system/Os;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat;+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;
-HSPLandroid/system/Os;->getpeername(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress;+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;
+HSPLandroid/system/Os;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat;+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Landroid/app/ActivityThread$AndroidOs;
+HSPLandroid/system/Os;->getpeername(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress;+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;,Llibcore/io/BlockGuardOs;
 HSPLandroid/system/Os;->getpgid(I)I
-HSPLandroid/system/Os;->getpid()I+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;,Llibcore/io/BlockGuardOs;
+HSPLandroid/system/Os;->getpid()I+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Landroid/app/ActivityThread$AndroidOs;
 HSPLandroid/system/Os;->gettid()I+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;,Llibcore/io/BlockGuardOs;
 HSPLandroid/system/Os;->getuid()I+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;,Llibcore/io/BlockGuardOs;
-HSPLandroid/system/Os;->getxattr(Ljava/lang/String;Ljava/lang/String;)[B
-HSPLandroid/system/Os;->ioctlInt(Ljava/io/FileDescriptor;I)I
+HSPLandroid/system/Os;->getxattr(Ljava/lang/String;Ljava/lang/String;)[B+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;
+HSPLandroid/system/Os;->ioctlInt(Ljava/io/FileDescriptor;I)I+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;
 HSPLandroid/system/Os;->listen(Ljava/io/FileDescriptor;I)V
 HSPLandroid/system/Os;->lseek(Ljava/io/FileDescriptor;JI)J+]Llibcore/io/Os;missing_types
+HSPLandroid/system/Os;->lstat(Ljava/lang/String;)Landroid/system/StructStat;+]Llibcore/io/Os;missing_types
 HSPLandroid/system/Os;->mkdir(Ljava/lang/String;I)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;
 HSPLandroid/system/Os;->mmap(JJIILjava/io/FileDescriptor;J)J+]Llibcore/io/Os;missing_types
 HSPLandroid/system/Os;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor;+]Llibcore/io/Os;missing_types
@@ -47,16 +50,17 @@
 HSPLandroid/system/Os;->setpgid(II)V
 HSPLandroid/system/Os;->setregid(II)V
 HSPLandroid/system/Os;->setreuid(II)V
+HSPLandroid/system/Os;->setsockoptInt(Ljava/io/FileDescriptor;III)V+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;
 HSPLandroid/system/Os;->setsockoptTimeval(Ljava/io/FileDescriptor;IILandroid/system/StructTimeval;)V+]Llibcore/io/Os;missing_types
 HSPLandroid/system/Os;->socket(III)Ljava/io/FileDescriptor;+]Llibcore/io/Os;missing_types
-HSPLandroid/system/Os;->socketpair(IIILjava/io/FileDescriptor;Ljava/io/FileDescriptor;)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;
+HSPLandroid/system/Os;->socketpair(IIILjava/io/FileDescriptor;Ljava/io/FileDescriptor;)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Landroid/app/ActivityThread$AndroidOs;
 HSPLandroid/system/Os;->stat(Ljava/lang/String;)Landroid/system/StructStat;+]Llibcore/io/Os;missing_types
-HSPLandroid/system/Os;->statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs;+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Landroid/app/ActivityThread$AndroidOs;
-HSPLandroid/system/Os;->sysconf(I)J
+HSPLandroid/system/Os;->statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs;+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;,Llibcore/io/BlockGuardOs;
+HSPLandroid/system/Os;->sysconf(I)J+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;
 HSPLandroid/system/Os;->write(Ljava/io/FileDescriptor;[BII)I+]Llibcore/io/Os;missing_types
 HSPLandroid/system/OsConstants;->S_ISDIR(I)Z
-HSPLandroid/system/OsConstants;->S_ISREG(I)Z
 HSPLandroid/system/OsConstants;->errnoName(I)Ljava/lang/String;
+HSPLandroid/system/OsConstants;->gaiName(I)Ljava/lang/String;
 HSPLandroid/system/StructAddrinfo;-><init>()V
 HSPLandroid/system/StructCapUserData;-><init>(III)V
 HSPLandroid/system/StructCapUserHeader;-><init>(II)V
@@ -108,8 +112,8 @@
 HSPLcom/android/okhttp/ConnectionSpec$Builder;->access$200(Lcom/android/okhttp/ConnectionSpec$Builder;)[Ljava/lang/String;
 HSPLcom/android/okhttp/ConnectionSpec$Builder;->access$300(Lcom/android/okhttp/ConnectionSpec$Builder;)Z
 HSPLcom/android/okhttp/ConnectionSpec$Builder;->build()Lcom/android/okhttp/ConnectionSpec;
-HSPLcom/android/okhttp/ConnectionSpec$Builder;->cipherSuites([Ljava/lang/String;)Lcom/android/okhttp/ConnectionSpec$Builder;
-HSPLcom/android/okhttp/ConnectionSpec$Builder;->tlsVersions([Ljava/lang/String;)Lcom/android/okhttp/ConnectionSpec$Builder;
+HSPLcom/android/okhttp/ConnectionSpec$Builder;->cipherSuites([Ljava/lang/String;)Lcom/android/okhttp/ConnectionSpec$Builder;+][Ljava/lang/String;[Ljava/lang/String;
+HSPLcom/android/okhttp/ConnectionSpec$Builder;->tlsVersions([Ljava/lang/String;)Lcom/android/okhttp/ConnectionSpec$Builder;+][Ljava/lang/String;[Ljava/lang/String;
 HSPLcom/android/okhttp/ConnectionSpec;-><init>(Lcom/android/okhttp/ConnectionSpec$Builder;)V
 HSPLcom/android/okhttp/ConnectionSpec;-><init>(Lcom/android/okhttp/ConnectionSpec$Builder;Lcom/android/okhttp/ConnectionSpec$1;)V
 HSPLcom/android/okhttp/ConnectionSpec;->access$400(Lcom/android/okhttp/ConnectionSpec;)Z
@@ -144,8 +148,10 @@
 HSPLcom/android/okhttp/Headers;->newBuilder()Lcom/android/okhttp/Headers$Builder;
 HSPLcom/android/okhttp/Headers;->size()I
 HSPLcom/android/okhttp/Headers;->value(I)Ljava/lang/String;
+HSPLcom/android/okhttp/HttpHandler$CleartextURLFilter;->checkURLPermitted(Ljava/net/URL;)V+]Ljava/net/URL;missing_types]Llibcore/net/NetworkSecurityPolicy;missing_types
 HSPLcom/android/okhttp/HttpHandler;-><init>()V
 HSPLcom/android/okhttp/HttpHandler;->createHttpOkUrlFactory(Ljava/net/Proxy;)Lcom/android/okhttp/OkUrlFactory;+]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;
+HSPLcom/android/okhttp/HttpHandler;->newOkUrlFactory(Ljava/net/Proxy;)Lcom/android/okhttp/OkUrlFactory;+]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;]Lcom/android/okhttp/OkUrlFactory;Lcom/android/okhttp/OkUrlFactory;]Lcom/android/okhttp/ConfigAwareConnectionPool;Lcom/android/okhttp/ConfigAwareConnectionPool;
 HSPLcom/android/okhttp/HttpHandler;->openConnection(Ljava/net/URL;)Ljava/net/URLConnection;+]Lcom/android/okhttp/OkUrlFactory;Lcom/android/okhttp/OkUrlFactory;]Lcom/android/okhttp/HttpHandler;Lcom/android/okhttp/HttpsHandler;,Lcom/android/okhttp/HttpHandler;
 HSPLcom/android/okhttp/HttpUrl$Builder;-><init>()V+]Ljava/util/List;missing_types
 HSPLcom/android/okhttp/HttpUrl$Builder;->build()Lcom/android/okhttp/HttpUrl;
@@ -199,6 +205,7 @@
 HSPLcom/android/okhttp/HttpUrl;->queryStringToNamesAndValues(Ljava/lang/String;)Ljava/util/List;+]Ljava/lang/String;missing_types]Ljava/util/List;missing_types
 HSPLcom/android/okhttp/HttpUrl;->scheme()Ljava/lang/String;
 HSPLcom/android/okhttp/HttpUrl;->uri()Ljava/net/URI;+]Lcom/android/okhttp/HttpUrl;Lcom/android/okhttp/HttpUrl;]Lcom/android/okhttp/HttpUrl$Builder;Lcom/android/okhttp/HttpUrl$Builder;
+HSPLcom/android/okhttp/HttpUrl;->url()Ljava/net/URL;
 HSPLcom/android/okhttp/HttpsHandler;-><init>()V
 HSPLcom/android/okhttp/HttpsHandler;->createHttpsOkUrlFactory(Ljava/net/Proxy;)Lcom/android/okhttp/OkUrlFactory;+]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;]Lcom/android/okhttp/OkUrlFactory;Lcom/android/okhttp/OkUrlFactory;
 HSPLcom/android/okhttp/HttpsHandler;->newOkUrlFactory(Ljava/net/Proxy;)Lcom/android/okhttp/OkUrlFactory;+]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;]Lcom/android/okhttp/OkUrlFactory;Lcom/android/okhttp/OkUrlFactory;]Lcom/android/okhttp/ConfigAwareConnectionPool;Lcom/android/okhttp/ConfigAwareConnectionPool;
@@ -219,7 +226,9 @@
 HSPLcom/android/okhttp/OkHttpClient;->getConnectionPool()Lcom/android/okhttp/ConnectionPool;
 HSPLcom/android/okhttp/OkHttpClient;->getConnectionSpecs()Ljava/util/List;
 HSPLcom/android/okhttp/OkHttpClient;->getCookieHandler()Ljava/net/CookieHandler;
+HSPLcom/android/okhttp/OkHttpClient;->getDefaultSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;
 HSPLcom/android/okhttp/OkHttpClient;->getDns()Lcom/android/okhttp/Dns;
+HSPLcom/android/okhttp/OkHttpClient;->getFollowRedirects()Z
 HSPLcom/android/okhttp/OkHttpClient;->getHostnameVerifier()Ljavax/net/ssl/HostnameVerifier;
 HSPLcom/android/okhttp/OkHttpClient;->getProtocols()Ljava/util/List;
 HSPLcom/android/okhttp/OkHttpClient;->getProxy()Ljava/net/Proxy;
@@ -234,14 +243,17 @@
 HSPLcom/android/okhttp/OkHttpClient;->setConnectTimeout(JLjava/util/concurrent/TimeUnit;)V+]Ljava/util/concurrent/TimeUnit;missing_types
 HSPLcom/android/okhttp/OkHttpClient;->setConnectionPool(Lcom/android/okhttp/ConnectionPool;)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setConnectionSpecs(Ljava/util/List;)Lcom/android/okhttp/OkHttpClient;
+HSPLcom/android/okhttp/OkHttpClient;->setDns(Lcom/android/okhttp/Dns;)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setFollowRedirects(Z)V
 HSPLcom/android/okhttp/OkHttpClient;->setFollowSslRedirects(Z)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setProtocols(Ljava/util/List;)Lcom/android/okhttp/OkHttpClient;+]Ljava/util/List;missing_types
 HSPLcom/android/okhttp/OkHttpClient;->setProxy(Ljava/net/Proxy;)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setReadTimeout(JLjava/util/concurrent/TimeUnit;)V+]Ljava/util/concurrent/TimeUnit;missing_types
+HSPLcom/android/okhttp/OkHttpClient;->setSocketFactory(Ljavax/net/SocketFactory;)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setSslSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setWriteTimeout(JLjava/util/concurrent/TimeUnit;)V+]Ljava/util/concurrent/TimeUnit;missing_types
+HSPLcom/android/okhttp/OkUrlFactories;->open(Lcom/android/okhttp/OkUrlFactory;Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/HttpURLConnection;+]Lcom/android/okhttp/OkUrlFactory;Lcom/android/okhttp/OkUrlFactory;
 HSPLcom/android/okhttp/OkUrlFactories;->setUrlFilter(Lcom/android/okhttp/OkUrlFactory;Lcom/android/okhttp/internal/URLFilter;)V+]Lcom/android/okhttp/OkUrlFactory;Lcom/android/okhttp/OkUrlFactory;
 HSPLcom/android/okhttp/OkUrlFactory;-><init>(Lcom/android/okhttp/OkHttpClient;)V
 HSPLcom/android/okhttp/OkUrlFactory;->client()Lcom/android/okhttp/OkHttpClient;
@@ -277,6 +289,7 @@
 HSPLcom/android/okhttp/Request;->isHttps()Z+]Lcom/android/okhttp/HttpUrl;Lcom/android/okhttp/HttpUrl;
 HSPLcom/android/okhttp/Request;->method()Ljava/lang/String;
 HSPLcom/android/okhttp/Request;->newBuilder()Lcom/android/okhttp/Request$Builder;
+HSPLcom/android/okhttp/Request;->url()Ljava/net/URL;+]Lcom/android/okhttp/HttpUrl;Lcom/android/okhttp/HttpUrl;
 HSPLcom/android/okhttp/Response$Builder;-><init>()V
 HSPLcom/android/okhttp/Response$Builder;-><init>(Lcom/android/okhttp/Response;)V+]Lcom/android/okhttp/Headers;Lcom/android/okhttp/Headers;
 HSPLcom/android/okhttp/Response$Builder;-><init>(Lcom/android/okhttp/Response;Lcom/android/okhttp/Response$1;)V
@@ -329,6 +342,7 @@
 HSPLcom/android/okhttp/ResponseBody;-><init>()V
 HSPLcom/android/okhttp/ResponseBody;->byteStream()Ljava/io/InputStream;+]Lcom/android/okhttp/okio/BufferedSource;Lcom/android/okhttp/okio/RealBufferedSource;]Lcom/android/okhttp/ResponseBody;Lcom/android/okhttp/internal/http/RealResponseBody;,Lcom/android/okhttp/Cache$CacheResponseBody;
 HSPLcom/android/okhttp/Route;-><init>(Lcom/android/okhttp/Address;Ljava/net/Proxy;Ljava/net/InetSocketAddress;)V
+HSPLcom/android/okhttp/Route;->equals(Ljava/lang/Object;)Z+]Lcom/android/okhttp/Address;Lcom/android/okhttp/Address;]Ljava/net/Proxy;missing_types]Ljava/net/InetSocketAddress;missing_types
 HSPLcom/android/okhttp/Route;->getAddress()Lcom/android/okhttp/Address;
 HSPLcom/android/okhttp/Route;->getProxy()Ljava/net/Proxy;
 HSPLcom/android/okhttp/Route;->getSocketAddress()Ljava/net/InetSocketAddress;
@@ -346,34 +360,47 @@
 HSPLcom/android/okhttp/internal/OptionalMethod;->invokeWithoutCheckedException(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+]Lcom/android/okhttp/internal/OptionalMethod;Lcom/android/okhttp/internal/OptionalMethod;
 HSPLcom/android/okhttp/internal/OptionalMethod;->isSupported(Ljava/lang/Object;)Z
 HSPLcom/android/okhttp/internal/Platform;->afterHandshake(Ljavax/net/ssl/SSLSocket;)V
+HSPLcom/android/okhttp/internal/Platform;->concatLengthPrefixed(Ljava/util/List;)[B+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/okhttp/Protocol;Lcom/android/okhttp/Protocol;
 HSPLcom/android/okhttp/internal/Platform;->configureTlsExtensions(Ljavax/net/ssl/SSLSocket;Ljava/lang/String;Ljava/util/List;)V+]Ljavax/net/ssl/SSLParameters;missing_types]Lcom/android/okhttp/internal/OptionalMethod;Lcom/android/okhttp/internal/OptionalMethod;]Ljavax/net/ssl/SSLSocket;missing_types
 HSPLcom/android/okhttp/internal/Platform;->connectSocket(Ljava/net/Socket;Ljava/net/InetSocketAddress;I)V+]Ljava/net/Socket;missing_types
-HSPLcom/android/okhttp/internal/Platform;->get()Lcom/android/okhttp/internal/Platform;
+HSPLcom/android/okhttp/internal/Platform;->get()Lcom/android/okhttp/internal/Platform;+]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;
 HSPLcom/android/okhttp/internal/Platform;->getProtocolIds(Ljava/util/List;)[Ljava/lang/String;
 HSPLcom/android/okhttp/internal/Platform;->getSelectedProtocol(Ljavax/net/ssl/SSLSocket;)Ljava/lang/String;+]Ljavax/net/ssl/SSLSocket;missing_types
 HSPLcom/android/okhttp/internal/Platform;->isPlatformSocket(Ljavax/net/ssl/SSLSocket;)Z
 HSPLcom/android/okhttp/internal/RouteDatabase;-><init>()V
 HSPLcom/android/okhttp/internal/RouteDatabase;->connected(Lcom/android/okhttp/Route;)V+]Ljava/util/Set;missing_types
-HSPLcom/android/okhttp/internal/RouteDatabase;->failed(Lcom/android/okhttp/Route;)V
+HSPLcom/android/okhttp/internal/RouteDatabase;->failed(Lcom/android/okhttp/Route;)V+]Ljava/util/Set;Ljava/util/LinkedHashSet;
 HSPLcom/android/okhttp/internal/RouteDatabase;->shouldPostpone(Lcom/android/okhttp/Route;)Z+]Ljava/util/Set;missing_types
 HSPLcom/android/okhttp/internal/Util$1;-><init>(Ljava/lang/String;Z)V
 HSPLcom/android/okhttp/internal/Util$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;+]Ljava/lang/Thread;Ljava/lang/Thread;
-HSPLcom/android/okhttp/internal/Util;->closeQuietly(Ljava/net/Socket;)V
+HSPLcom/android/okhttp/internal/Util;->checkOffsetAndCount(JJJ)V
+HSPLcom/android/okhttp/internal/Util;->closeQuietly(Ljava/io/Closeable;)V
+HSPLcom/android/okhttp/internal/Util;->closeQuietly(Ljava/net/Socket;)V+]Ljava/net/Socket;Ljava/net/Socket;,Lcom/android/org/conscrypt/Java8EngineSocket;
+HSPLcom/android/okhttp/internal/Util;->discard(Lcom/android/okhttp/okio/Source;ILjava/util/concurrent/TimeUnit;)Z
 HSPLcom/android/okhttp/internal/Util;->equal(Ljava/lang/Object;Ljava/lang/Object;)Z
-HSPLcom/android/okhttp/internal/Util;->hostHeader(Lcom/android/okhttp/HttpUrl;Z)Ljava/lang/String;
+HSPLcom/android/okhttp/internal/Util;->hostHeader(Lcom/android/okhttp/HttpUrl;Z)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/okhttp/HttpUrl;Lcom/android/okhttp/HttpUrl;
 HSPLcom/android/okhttp/internal/Util;->immutableList(Ljava/util/List;)Ljava/util/List;
 HSPLcom/android/okhttp/internal/Util;->immutableList([Ljava/lang/Object;)Ljava/util/List;
+HSPLcom/android/okhttp/internal/Util;->skipAll(Lcom/android/okhttp/okio/Source;ILjava/util/concurrent/TimeUnit;)Z+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/Timeout;Lcom/android/okhttp/okio/ForwardingTimeout;]Lcom/android/okhttp/okio/Source;Lcom/android/okhttp/internal/http/Http1xStream$FixedLengthSource;,Lcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;
 HSPLcom/android/okhttp/internal/Util;->threadFactory(Ljava/lang/String;Z)Ljava/util/concurrent/ThreadFactory;
+HSPLcom/android/okhttp/internal/Util;->toHumanReadableAscii(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;
 HSPLcom/android/okhttp/internal/http/CacheStrategy$Factory;-><init>(JLcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Ljava/lang/String;missing_types]Lcom/android/okhttp/Headers;Lcom/android/okhttp/Headers;
 HSPLcom/android/okhttp/internal/http/CacheStrategy$Factory;->get()Lcom/android/okhttp/internal/http/CacheStrategy;+]Lcom/android/okhttp/CacheControl;Lcom/android/okhttp/CacheControl;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;
 HSPLcom/android/okhttp/internal/http/CacheStrategy$Factory;->getCandidate()Lcom/android/okhttp/internal/http/CacheStrategy;+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/CacheControl;Lcom/android/okhttp/CacheControl;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;]Lcom/android/okhttp/Response$Builder;Lcom/android/okhttp/Response$Builder;]Lcom/android/okhttp/Request$Builder;Lcom/android/okhttp/Request$Builder;
 HSPLcom/android/okhttp/internal/http/CacheStrategy;-><init>(Lcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V
 HSPLcom/android/okhttp/internal/http/CacheStrategy;-><init>(Lcom/android/okhttp/Request;Lcom/android/okhttp/Response;Lcom/android/okhttp/internal/http/CacheStrategy$1;)V
 HSPLcom/android/okhttp/internal/http/HeaderParser;->skipUntil(Ljava/lang/String;ILjava/lang/String;)I
+HSPLcom/android/okhttp/internal/http/HeaderParser;->skipWhitespace(Ljava/lang/String;I)I
 HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;)V+]Lcom/android/okhttp/okio/BufferedSource;Lcom/android/okhttp/okio/RealBufferedSource;
 HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/internal/http/Http1xStream$1;)V
 HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;->endOfInput()V+]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;
 HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;->timeout()Lcom/android/okhttp/okio/Timeout;
+HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;->unexpectedEndOfInput()V
+HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;)V+]Lcom/android/okhttp/okio/BufferedSink;Lcom/android/okhttp/okio/RealBufferedSink;
+HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/internal/http/Http1xStream$1;)V
+HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->close()V
+HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->flush()V
+HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->write(Lcom/android/okhttp/okio/Buffer;J)V+]Lcom/android/okhttp/okio/BufferedSink;Lcom/android/okhttp/okio/RealBufferedSink;
 HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/internal/http/HttpEngine;)V
 HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;->close()V+]Lcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;Lcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;
 HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;->read(Lcom/android/okhttp/okio/Buffer;J)J+]Lcom/android/okhttp/okio/BufferedSource;Lcom/android/okhttp/okio/RealBufferedSource;]Lcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;Lcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;
@@ -398,6 +425,7 @@
 HSPLcom/android/okhttp/internal/http/Http1xStream;->detachTimeout(Lcom/android/okhttp/okio/ForwardingTimeout;)V+]Lcom/android/okhttp/okio/Timeout;Lcom/android/okhttp/okio/Okio$3;]Lcom/android/okhttp/okio/ForwardingTimeout;Lcom/android/okhttp/okio/ForwardingTimeout;
 HSPLcom/android/okhttp/internal/http/Http1xStream;->finishRequest()V+]Lcom/android/okhttp/okio/BufferedSink;Lcom/android/okhttp/okio/RealBufferedSink;
 HSPLcom/android/okhttp/internal/http/Http1xStream;->getTransferStream(Lcom/android/okhttp/Response;)Lcom/android/okhttp/okio/Source;+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Ljava/lang/String;missing_types]Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/internal/http/Http1xStream;
+HSPLcom/android/okhttp/internal/http/Http1xStream;->newChunkedSink()Lcom/android/okhttp/okio/Sink;
 HSPLcom/android/okhttp/internal/http/Http1xStream;->newChunkedSource(Lcom/android/okhttp/internal/http/HttpEngine;)Lcom/android/okhttp/okio/Source;
 HSPLcom/android/okhttp/internal/http/Http1xStream;->newFixedLengthSink(J)Lcom/android/okhttp/okio/Sink;
 HSPLcom/android/okhttp/internal/http/Http1xStream;->newFixedLengthSource(J)Lcom/android/okhttp/okio/Source;
@@ -412,27 +440,28 @@
 HSPLcom/android/okhttp/internal/http/HttpEngine;-><init>(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;ZZZLcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/RetryableSink;Lcom/android/okhttp/Response;)V+]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->cacheWritingResponse(Lcom/android/okhttp/internal/http/CacheRequest;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/internal/http/CacheRequest;Lcom/android/okhttp/Cache$CacheRequestImpl;]Lcom/android/okhttp/ResponseBody;Lcom/android/okhttp/internal/http/RealResponseBody;]Lcom/android/okhttp/Response$Builder;Lcom/android/okhttp/Response$Builder;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->cancel()V+]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;
-HSPLcom/android/okhttp/internal/http/HttpEngine;->close()Lcom/android/okhttp/internal/http/StreamAllocation;+]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;
+HSPLcom/android/okhttp/internal/http/HttpEngine;->close()Lcom/android/okhttp/internal/http/StreamAllocation;+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->connect()Lcom/android/okhttp/internal/http/HttpStream;+]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->createAddress(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;)Lcom/android/okhttp/Address;+]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;]Lcom/android/okhttp/HttpUrl;Lcom/android/okhttp/HttpUrl;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->followUpRequest()Lcom/android/okhttp/Request;+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/Route;Lcom/android/okhttp/Route;]Lcom/android/okhttp/Connection;Lcom/android/okhttp/internal/io/RealConnection;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/HttpUrl;Lcom/android/okhttp/HttpUrl;]Lcom/android/okhttp/Request$Builder;Lcom/android/okhttp/Request$Builder;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->getBufferedRequestBody()Lcom/android/okhttp/okio/BufferedSink;+]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->getConnection()Lcom/android/okhttp/Connection;+]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;
+HSPLcom/android/okhttp/internal/http/HttpEngine;->getRequest()Lcom/android/okhttp/Request;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->getRequestBody()Lcom/android/okhttp/okio/Sink;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->getResponse()Lcom/android/okhttp/Response;
-HSPLcom/android/okhttp/internal/http/HttpEngine;->hasBody(Lcom/android/okhttp/Response;)Z+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Ljava/lang/String;Ljava/lang/String;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;
+HSPLcom/android/okhttp/internal/http/HttpEngine;->hasBody(Lcom/android/okhttp/Response;)Z+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;]Ljava/lang/String;Ljava/lang/String;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->hasResponse()Z
 HSPLcom/android/okhttp/internal/http/HttpEngine;->maybeCache()V+]Lcom/android/okhttp/internal/Internal;Lcom/android/okhttp/OkHttpClient$1;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;]Lcom/android/okhttp/internal/InternalCache;Lcom/android/okhttp/Cache$1;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->networkRequest(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Request;+]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;]Lcom/android/okhttp/Request$Builder;Lcom/android/okhttp/Request$Builder;]Ljava/net/CookieHandler;missing_types
 HSPLcom/android/okhttp/internal/http/HttpEngine;->permitsRequestBody(Lcom/android/okhttp/Request;)Z+]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->readNetworkResponse()Lcom/android/okhttp/Response;+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Ljava/lang/String;missing_types]Lcom/android/okhttp/internal/io/RealConnection;Lcom/android/okhttp/internal/io/RealConnection;]Lcom/android/okhttp/internal/http/HttpStream;Lcom/android/okhttp/internal/http/Http1xStream;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;]Lcom/android/okhttp/Response$Builder;Lcom/android/okhttp/Response$Builder;
-HSPLcom/android/okhttp/internal/http/HttpEngine;->readResponse()V+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/internal/http/RetryableSink;Lcom/android/okhttp/internal/http/RetryableSink;]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/BufferedSink;Lcom/android/okhttp/okio/RealBufferedSink;]Lcom/android/okhttp/internal/http/HttpStream;Lcom/android/okhttp/internal/http/Http1xStream;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;]Lcom/android/okhttp/Request$Builder;Lcom/android/okhttp/Request$Builder;]Lcom/android/okhttp/Response$Builder;Lcom/android/okhttp/Response$Builder;]Lcom/android/okhttp/okio/Sink;Lcom/android/okhttp/internal/http/RetryableSink;
+HSPLcom/android/okhttp/internal/http/HttpEngine;->readResponse()V+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/BufferedSink;Lcom/android/okhttp/okio/RealBufferedSink;]Lcom/android/okhttp/internal/http/HttpStream;Lcom/android/okhttp/internal/http/Http1xStream;]Lcom/android/okhttp/Response$Builder;Lcom/android/okhttp/Response$Builder;]Lcom/android/okhttp/internal/http/RetryableSink;Lcom/android/okhttp/internal/http/RetryableSink;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;]Lcom/android/okhttp/Request$Builder;Lcom/android/okhttp/Request$Builder;]Lcom/android/okhttp/okio/Sink;Lcom/android/okhttp/internal/http/RetryableSink;]Lcom/android/okhttp/internal/Internal;Lcom/android/okhttp/OkHttpClient$1;]Lcom/android/okhttp/ResponseBody;Lcom/android/okhttp/internal/http/RealResponseBody;]Lcom/android/okhttp/internal/InternalCache;Lcom/android/okhttp/Cache$1;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->receiveHeaders(Lcom/android/okhttp/Headers;)V+]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;]Ljava/net/CookieHandler;missing_types]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->recover(Lcom/android/okhttp/internal/http/RouteException;)Lcom/android/okhttp/internal/http/HttpEngine;+]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->recover(Ljava/io/IOException;)Lcom/android/okhttp/internal/http/HttpEngine;+]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->recover(Ljava/io/IOException;Lcom/android/okhttp/okio/Sink;)Lcom/android/okhttp/internal/http/HttpEngine;+]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->releaseStreamAllocation()V+]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;
-HSPLcom/android/okhttp/internal/http/HttpEngine;->sendRequest()V+]Lcom/android/okhttp/internal/Internal;Lcom/android/okhttp/OkHttpClient$1;]Lcom/android/okhttp/internal/http/CacheStrategy$Factory;Lcom/android/okhttp/internal/http/CacheStrategy$Factory;]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/internal/http/HttpStream;Lcom/android/okhttp/internal/http/Http1xStream;]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/internal/InternalCache;Lcom/android/okhttp/Cache$1;]Lcom/android/okhttp/Response$Builder;Lcom/android/okhttp/Response$Builder;
+HSPLcom/android/okhttp/internal/http/HttpEngine;->sendRequest()V+]Lcom/android/okhttp/internal/Internal;Lcom/android/okhttp/OkHttpClient$1;]Lcom/android/okhttp/internal/http/CacheStrategy$Factory;Lcom/android/okhttp/internal/http/CacheStrategy$Factory;]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/internal/http/HttpStream;Lcom/android/okhttp/internal/http/Http1xStream;]Lcom/android/okhttp/internal/InternalCache;Lcom/android/okhttp/Cache$1;]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/Response$Builder;Lcom/android/okhttp/Response$Builder;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->stripBody(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/Response$Builder;Lcom/android/okhttp/Response$Builder;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->unzip(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Ljava/lang/String;missing_types]Lcom/android/okhttp/Headers$Builder;Lcom/android/okhttp/Headers$Builder;]Lcom/android/okhttp/ResponseBody;Lcom/android/okhttp/internal/http/RealResponseBody;]Lcom/android/okhttp/Headers;Lcom/android/okhttp/Headers;]Lcom/android/okhttp/Response$Builder;Lcom/android/okhttp/Response$Builder;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->writingRequestHeaders()V
@@ -440,10 +469,11 @@
 HSPLcom/android/okhttp/internal/http/HttpMethod;->requiresRequestBody(Ljava/lang/String;)Z
 HSPLcom/android/okhttp/internal/http/OkHeaders$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I+]Lcom/android/okhttp/internal/http/OkHeaders$1;Lcom/android/okhttp/internal/http/OkHeaders$1;
 HSPLcom/android/okhttp/internal/http/OkHeaders$1;->compare(Ljava/lang/String;Ljava/lang/String;)I+]Ljava/util/Comparator;missing_types
-HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Headers;)J
-HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Request;)J
-HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Response;)J
+HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Headers;)J+]Lcom/android/okhttp/Headers;Lcom/android/okhttp/Headers;
+HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Request;)J+]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;
+HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Response;)J+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;
 HSPLcom/android/okhttp/internal/http/OkHeaders;->stringToLong(Ljava/lang/String;)J
+HSPLcom/android/okhttp/internal/http/OkHeaders;->toMultimap(Lcom/android/okhttp/Headers;Ljava/lang/String;)Ljava/util/Map;+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Ljava/util/TreeMap;]Lcom/android/okhttp/Headers;Lcom/android/okhttp/Headers;
 HSPLcom/android/okhttp/internal/http/RealResponseBody;-><init>(Lcom/android/okhttp/Headers;Lcom/android/okhttp/okio/BufferedSource;)V
 HSPLcom/android/okhttp/internal/http/RealResponseBody;->source()Lcom/android/okhttp/okio/BufferedSource;
 HSPLcom/android/okhttp/internal/http/RequestLine;->get(Lcom/android/okhttp/Request;Ljava/net/Proxy$Type;)Ljava/lang/String;+]Ljava/lang/StringBuilder;missing_types]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;
@@ -459,13 +489,14 @@
 HSPLcom/android/okhttp/internal/http/RouteException;-><init>(Ljava/io/IOException;)V
 HSPLcom/android/okhttp/internal/http/RouteException;->getLastConnectException()Ljava/io/IOException;
 HSPLcom/android/okhttp/internal/http/RouteSelector;-><init>(Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/RouteDatabase;)V+]Lcom/android/okhttp/Address;Lcom/android/okhttp/Address;
-HSPLcom/android/okhttp/internal/http/RouteSelector;->connectFailed(Lcom/android/okhttp/Route;Ljava/io/IOException;)V
+HSPLcom/android/okhttp/internal/http/RouteSelector;->connectFailed(Lcom/android/okhttp/Route;Ljava/io/IOException;)V+]Lcom/android/okhttp/Route;Lcom/android/okhttp/Route;]Lcom/android/okhttp/internal/RouteDatabase;Lcom/android/okhttp/internal/RouteDatabase;]Ljava/net/Proxy;Ljava/net/Proxy;
 HSPLcom/android/okhttp/internal/http/RouteSelector;->hasNext()Z
 HSPLcom/android/okhttp/internal/http/RouteSelector;->hasNextInetSocketAddress()Z+]Ljava/util/List;missing_types
 HSPLcom/android/okhttp/internal/http/RouteSelector;->hasNextPostponed()Z+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLcom/android/okhttp/internal/http/RouteSelector;->hasNextProxy()Z+]Ljava/util/List;missing_types
 HSPLcom/android/okhttp/internal/http/RouteSelector;->next()Lcom/android/okhttp/Route;+]Lcom/android/okhttp/internal/RouteDatabase;Lcom/android/okhttp/internal/RouteDatabase;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/okhttp/internal/http/RouteSelector;Lcom/android/okhttp/internal/http/RouteSelector;
 HSPLcom/android/okhttp/internal/http/RouteSelector;->nextInetSocketAddress()Ljava/net/InetSocketAddress;+]Ljava/util/List;missing_types
+HSPLcom/android/okhttp/internal/http/RouteSelector;->nextPostponed()Lcom/android/okhttp/Route;
 HSPLcom/android/okhttp/internal/http/RouteSelector;->nextProxy()Ljava/net/Proxy;+]Ljava/util/List;missing_types
 HSPLcom/android/okhttp/internal/http/RouteSelector;->resetNextInetSocketAddress(Ljava/net/Proxy;)V+]Lcom/android/okhttp/Dns;Lcom/android/okhttp/Dns$1;,Lcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory$DnsAdapter;]Ljava/util/List;missing_types]Lcom/android/okhttp/Address;Lcom/android/okhttp/Address;]Ljava/net/Proxy;missing_types
 HSPLcom/android/okhttp/internal/http/RouteSelector;->resetNextProxy(Lcom/android/okhttp/HttpUrl;Ljava/net/Proxy;)V+]Lcom/android/okhttp/HttpUrl;Lcom/android/okhttp/HttpUrl;]Ljava/util/List;missing_types]Lcom/android/okhttp/Address;Lcom/android/okhttp/Address;]Ljava/net/ProxySelector;missing_types
@@ -475,22 +506,24 @@
 HSPLcom/android/okhttp/internal/http/StatusLine;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;missing_types
 HSPLcom/android/okhttp/internal/http/StreamAllocation;-><init>(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/Address;)V
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->acquire(Lcom/android/okhttp/internal/io/RealConnection;)V+]Ljava/util/List;missing_types
-HSPLcom/android/okhttp/internal/http/StreamAllocation;->cancel()V
+HSPLcom/android/okhttp/internal/http/StreamAllocation;->cancel()V+]Lcom/android/okhttp/internal/http/HttpStream;Lcom/android/okhttp/internal/http/Http1xStream;
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->connection()Lcom/android/okhttp/internal/io/RealConnection;
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->connectionFailed()V
-HSPLcom/android/okhttp/internal/http/StreamAllocation;->connectionFailed(Ljava/io/IOException;)V+]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;
+HSPLcom/android/okhttp/internal/http/StreamAllocation;->connectionFailed(Ljava/io/IOException;)V+]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;]Lcom/android/okhttp/internal/io/RealConnection;Lcom/android/okhttp/internal/io/RealConnection;]Lcom/android/okhttp/internal/http/RouteSelector;Lcom/android/okhttp/internal/http/RouteSelector;
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->deallocate(ZZZ)V+]Lcom/android/okhttp/internal/Internal;Lcom/android/okhttp/OkHttpClient$1;]Lcom/android/okhttp/internal/io/RealConnection;Lcom/android/okhttp/internal/io/RealConnection;]Ljava/util/List;missing_types
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->findConnection(IIIZ)Lcom/android/okhttp/internal/io/RealConnection;+]Lcom/android/okhttp/internal/Internal;Lcom/android/okhttp/OkHttpClient$1;]Lcom/android/okhttp/internal/io/RealConnection;Lcom/android/okhttp/internal/io/RealConnection;]Lcom/android/okhttp/internal/RouteDatabase;Lcom/android/okhttp/internal/RouteDatabase;]Lcom/android/okhttp/Address;Lcom/android/okhttp/Address;]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;]Lcom/android/okhttp/internal/http/RouteSelector;Lcom/android/okhttp/internal/http/RouteSelector;
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->findHealthyConnection(IIIZZ)Lcom/android/okhttp/internal/io/RealConnection;+]Lcom/android/okhttp/internal/io/RealConnection;Lcom/android/okhttp/internal/io/RealConnection;]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->isRecoverable(Lcom/android/okhttp/internal/http/RouteException;)Z
-HSPLcom/android/okhttp/internal/http/StreamAllocation;->newStream(IIIZZ)Lcom/android/okhttp/internal/http/HttpStream;+]Lcom/android/okhttp/okio/BufferedSource;Lcom/android/okhttp/okio/RealBufferedSource;]Lcom/android/okhttp/internal/io/RealConnection;Lcom/android/okhttp/internal/io/RealConnection;]Lcom/android/okhttp/okio/Timeout;Lcom/android/okhttp/okio/Okio$3;]Lcom/android/okhttp/okio/BufferedSink;Lcom/android/okhttp/okio/RealBufferedSink;]Ljava/net/Socket;missing_types
+HSPLcom/android/okhttp/internal/http/StreamAllocation;->isRecoverable(Ljava/io/IOException;)Z
+HSPLcom/android/okhttp/internal/http/StreamAllocation;->newStream(IIIZZ)Lcom/android/okhttp/internal/http/HttpStream;+]Lcom/android/okhttp/okio/BufferedSource;Lcom/android/okhttp/okio/RealBufferedSource;]Lcom/android/okhttp/okio/Timeout;Lcom/android/okhttp/okio/Okio$3;]Lcom/android/okhttp/internal/io/RealConnection;Lcom/android/okhttp/internal/io/RealConnection;]Lcom/android/okhttp/okio/BufferedSink;Lcom/android/okhttp/okio/RealBufferedSink;]Ljava/net/Socket;missing_types
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->noNewStreams()V
-HSPLcom/android/okhttp/internal/http/StreamAllocation;->recover(Lcom/android/okhttp/internal/http/RouteException;)Z+]Lcom/android/okhttp/internal/http/RouteSelector;Lcom/android/okhttp/internal/http/RouteSelector;
+HSPLcom/android/okhttp/internal/http/StreamAllocation;->recover(Lcom/android/okhttp/internal/http/RouteException;)Z+]Lcom/android/okhttp/internal/http/RouteSelector;Lcom/android/okhttp/internal/http/RouteSelector;]Lcom/android/okhttp/internal/http/RouteException;Lcom/android/okhttp/internal/http/RouteException;
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->recover(Ljava/io/IOException;Lcom/android/okhttp/okio/Sink;)Z
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->release()V
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->release(Lcom/android/okhttp/internal/io/RealConnection;)V+]Ljava/lang/ref/Reference;missing_types]Ljava/util/List;missing_types
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->routeDatabase()Lcom/android/okhttp/internal/RouteDatabase;+]Lcom/android/okhttp/internal/Internal;Lcom/android/okhttp/OkHttpClient$1;
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->streamFinished(Lcom/android/okhttp/internal/http/HttpStream;)V
+HSPLcom/android/okhttp/internal/http/StreamAllocation;->toString()Ljava/lang/String;+]Ljava/lang/Object;Lcom/android/okhttp/Address;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;-><init>(Ljava/net/HttpURLConnection;)V+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->addRequestProperty(Ljava/lang/String;Ljava/lang/String;)V+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->connect()V+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
@@ -498,17 +531,20 @@
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentEncoding()Ljava/lang/String;+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentLength()I+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentType()Ljava/lang/String;+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getErrorStream()Ljava/io/InputStream;+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getHeaderField(Ljava/lang/String;)Ljava/lang/String;+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getHeaderFields()Ljava/util/Map;+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getInputStream()Ljava/io/InputStream;+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getOutputStream()Ljava/io/OutputStream;+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getRequestMethod()Ljava/lang/String;+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getRequestProperties()Ljava/util/Map;+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String;+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getResponseCode()I+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getResponseMessage()Ljava/lang/String;+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getURL()Ljava/net/URL;+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setChunkedStreamingMode(I)V
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setConnectTimeout(I)V+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setDefaultUseCaches(Z)V
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setDoInput(Z)V+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setDoOutput(Z)V+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setFixedLengthStreamingMode(I)V+]Ljava/net/HttpURLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
@@ -523,13 +559,14 @@
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->connect()V
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->defaultUserAgent()Ljava/lang/String;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->disconnect()V+]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;
-HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->execute(Z)Z+]Lcom/android/okhttp/Connection;Lcom/android/okhttp/internal/io/RealConnection;]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/internal/http/RouteException;Lcom/android/okhttp/internal/http/RouteException;]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;]Lcom/android/okhttp/internal/URLFilter;Lcom/android/okhttp/HttpHandler$CleartextURLFilter;
+HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->execute(Z)Z+]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/Connection;Lcom/android/okhttp/internal/io/RealConnection;]Lcom/android/okhttp/internal/http/RouteException;Lcom/android/okhttp/internal/http/RouteException;]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;]Lcom/android/okhttp/internal/URLFilter;Lcom/android/okhttp/HttpHandler$CleartextURLFilter;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getErrorStream()Ljava/io/InputStream;+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/ResponseBody;Lcom/android/okhttp/internal/http/RealResponseBody;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getHeaderField(Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/okhttp/Headers;Lcom/android/okhttp/Headers;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getHeaderFields()Ljava/util/Map;+]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/internal/http/StatusLine;Lcom/android/okhttp/internal/http/StatusLine;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getHeaders()Lcom/android/okhttp/Headers;+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/Headers$Builder;Lcom/android/okhttp/Headers$Builder;]Lcom/android/okhttp/Protocol;Lcom/android/okhttp/Protocol;]Lcom/android/okhttp/Headers;Lcom/android/okhttp/Headers;
-HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getInputStream()Ljava/io/InputStream;+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Ljava/net/URL;missing_types]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;]Lcom/android/okhttp/ResponseBody;Lcom/android/okhttp/internal/http/RealResponseBody;,Lcom/android/okhttp/Cache$CacheResponseBody;
+HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getInputStream()Ljava/io/InputStream;+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;]Lcom/android/okhttp/ResponseBody;Lcom/android/okhttp/internal/http/RealResponseBody;,Lcom/android/okhttp/Cache$CacheResponseBody;]Ljava/net/URL;missing_types
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getOutputStream()Ljava/io/OutputStream;+]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;]Lcom/android/okhttp/okio/BufferedSink;Lcom/android/okhttp/okio/RealBufferedSink;
+HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getRequestProperties()Ljava/util/Map;+]Lcom/android/okhttp/Headers$Builder;Lcom/android/okhttp/Headers$Builder;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/okhttp/Headers$Builder;Lcom/android/okhttp/Headers$Builder;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getResponse()Lcom/android/okhttp/internal/http/HttpEngine;+]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;]Lcom/android/okhttp/Request;Lcom/android/okhttp/Request;]Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/StreamAllocation;]Lcom/android/okhttp/Headers;Lcom/android/okhttp/Headers;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getResponseCode()I+]Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;]Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/internal/http/HttpEngine;
@@ -543,7 +580,7 @@
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setInstanceFollowRedirects(Z)V+]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setReadTimeout(I)V+]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setRequestMethod(Ljava/lang/String;)V+]Ljava/util/Set;missing_types
-HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/okhttp/Headers$Builder;Lcom/android/okhttp/Headers$Builder;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/okhttp/internal/Platform;Lcom/android/okhttp/internal/Platform;
+HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/okhttp/Headers$Builder;Lcom/android/okhttp/Headers$Builder;]Ljava/lang/StringBuilder;missing_types]Lcom/android/okhttp/internal/Platform;Lcom/android/okhttp/internal/Platform;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;-><init>(Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;-><init>(Ljava/net/URL;Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/internal/URLFilter;)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->addRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
@@ -552,17 +589,20 @@
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentEncoding()Ljava/lang/String;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentLength()I
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentType()Ljava/lang/String;
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getErrorStream()Ljava/io/InputStream;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getHeaderField(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getHeaderFields()Ljava/util/Map;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getInputStream()Ljava/io/InputStream;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getOutputStream()Ljava/io/OutputStream;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getRequestMethod()Ljava/lang/String;
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getRequestProperties()Ljava/util/Map;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getResponseCode()I
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getResponseMessage()Ljava/lang/String;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getURL()Ljava/net/URL;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setChunkedStreamingMode(I)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setConnectTimeout(I)V
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setDefaultUseCaches(Z)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setDoInput(Z)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setDoOutput(Z)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setFixedLengthStreamingMode(I)V
@@ -575,20 +615,28 @@
 HSPLcom/android/okhttp/internal/io/RealConnection;-><init>(Lcom/android/okhttp/Route;)V
 HSPLcom/android/okhttp/internal/io/RealConnection;->allocationLimit()I
 HSPLcom/android/okhttp/internal/io/RealConnection;->cancel()V
-HSPLcom/android/okhttp/internal/io/RealConnection;->connect(IIILjava/util/List;Z)V+]Lcom/android/okhttp/Route;Lcom/android/okhttp/Route;]Lcom/android/okhttp/internal/ConnectionSpecSelector;Lcom/android/okhttp/internal/ConnectionSpecSelector;]Ljavax/net/SocketFactory;missing_types]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/okhttp/Address;Lcom/android/okhttp/Address;]Ljava/net/Proxy;missing_types
+HSPLcom/android/okhttp/internal/io/RealConnection;->connect(IIILjava/util/List;Z)V+]Lcom/android/okhttp/Route;Lcom/android/okhttp/Route;]Ljavax/net/SocketFactory;missing_types]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Lcom/android/okhttp/Address;Lcom/android/okhttp/Address;]Ljava/net/Proxy;missing_types]Lcom/android/okhttp/internal/ConnectionSpecSelector;Lcom/android/okhttp/internal/ConnectionSpecSelector;
 HSPLcom/android/okhttp/internal/io/RealConnection;->connectSocket(IIILcom/android/okhttp/internal/ConnectionSpecSelector;)V+]Lcom/android/okhttp/Route;Lcom/android/okhttp/Route;]Lcom/android/okhttp/internal/Platform;Lcom/android/okhttp/internal/Platform;]Ljava/net/Socket;missing_types]Lcom/android/okhttp/Address;Lcom/android/okhttp/Address;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLcom/android/okhttp/internal/io/RealConnection;->connectTls(IILcom/android/okhttp/internal/ConnectionSpecSelector;)V+]Lcom/android/okhttp/Route;Lcom/android/okhttp/Route;]Lcom/android/okhttp/internal/Platform;Lcom/android/okhttp/internal/Platform;]Lcom/android/okhttp/internal/ConnectionSpecSelector;Lcom/android/okhttp/internal/ConnectionSpecSelector;]Lcom/android/okhttp/Address;Lcom/android/okhttp/Address;]Lcom/android/okhttp/ConnectionSpec;Lcom/android/okhttp/ConnectionSpec;]Ljavax/net/ssl/HostnameVerifier;missing_types]Ljavax/net/ssl/SSLSocket;missing_types]Ljavax/net/ssl/SSLSocketFactory;missing_types]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/security/cert/X509Certificate;missing_types]Lcom/android/okhttp/Handshake;Lcom/android/okhttp/Handshake;]Ljava/security/Principal;Ljavax/security/auth/x500/X500Principal;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+HSPLcom/android/okhttp/internal/io/RealConnection;->connectTls(IILcom/android/okhttp/internal/ConnectionSpecSelector;)V+]Lcom/android/okhttp/Route;Lcom/android/okhttp/Route;]Ljavax/net/ssl/HostnameVerifier;missing_types]Lcom/android/okhttp/internal/Platform;Lcom/android/okhttp/internal/Platform;]Ljavax/net/ssl/SSLSocket;missing_types]Lcom/android/okhttp/internal/ConnectionSpecSelector;Lcom/android/okhttp/internal/ConnectionSpecSelector;]Lcom/android/okhttp/Address;Lcom/android/okhttp/Address;]Ljavax/net/ssl/SSLSocketFactory;missing_types]Lcom/android/okhttp/ConnectionSpec;Lcom/android/okhttp/ConnectionSpec;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/security/cert/X509Certificate;missing_types]Lcom/android/okhttp/Handshake;Lcom/android/okhttp/Handshake;]Ljava/security/Principal;Ljavax/security/auth/x500/X500Principal;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
 HSPLcom/android/okhttp/internal/io/RealConnection;->getHandshake()Lcom/android/okhttp/Handshake;
 HSPLcom/android/okhttp/internal/io/RealConnection;->getRoute()Lcom/android/okhttp/Route;
 HSPLcom/android/okhttp/internal/io/RealConnection;->getSocket()Ljava/net/Socket;
-HSPLcom/android/okhttp/internal/io/RealConnection;->isHealthy(Z)Z+]Lcom/android/okhttp/okio/BufferedSource;Lcom/android/okhttp/okio/RealBufferedSource;]Ljava/net/Socket;missing_types
+HSPLcom/android/okhttp/internal/io/RealConnection;->isHealthy(Z)Z+]Ljava/net/Socket;missing_types]Lcom/android/okhttp/okio/BufferedSource;Lcom/android/okhttp/okio/RealBufferedSource;
 HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->getSubjectAltNames(Ljava/security/cert/X509Certificate;I)Ljava/util/List;+]Ljava/security/cert/X509Certificate;missing_types]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/ArrayList;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
-HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->isPrintableAscii(Ljava/lang/String;)Z
+HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->isPrintableAscii(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String;
 HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verify(Ljava/lang/String;Ljava/security/cert/X509Certificate;)Z
 HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z+]Ljavax/net/ssl/SSLSession;missing_types]Lcom/android/okhttp/internal/tls/OkHostnameVerifier;Lcom/android/okhttp/internal/tls/OkHostnameVerifier;
 HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verifyAsIpAddress(Ljava/lang/String;)Z
 HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verifyHostName(Ljava/lang/String;Ljava/lang/String;)Z+]Ljava/lang/String;missing_types]Ljava/lang/StringBuilder;missing_types
 HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verifyHostName(Ljava/lang/String;Ljava/security/cert/X509Certificate;)Z+]Ljava/lang/String;missing_types]Ljava/util/List;missing_types
+HSPLcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory$DnsAdapter;-><init>(Lcom/android/okhttp/internalandroidapi/Dns;)V
+HSPLcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory$DnsAdapter;->hashCode()I+]Ljava/lang/Object;missing_types
+HSPLcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory$DnsAdapter;->lookup(Ljava/lang/String;)Ljava/util/List;+]Lcom/android/okhttp/internalandroidapi/Dns;missing_types
+HSPLcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory;-><init>()V
+HSPLcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory;->internalOpenConnection(Ljava/net/URL;Ljavax/net/SocketFactory;Ljava/net/Proxy;)Ljava/net/URLConnection;+]Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/OkHttpClient;]Ljava/net/URL;missing_types]Lcom/android/okhttp/OkUrlFactory;Lcom/android/okhttp/OkUrlFactory;
+HSPLcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory;->openConnection(Ljava/net/URL;Ljavax/net/SocketFactory;Ljava/net/Proxy;)Ljava/net/URLConnection;
+HSPLcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory;->setDns(Lcom/android/okhttp/internalandroidapi/Dns;)V
+HSPLcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory;->setNewConnectionPool(IJLjava/util/concurrent/TimeUnit;)V
 HSPLcom/android/okhttp/okio/AsyncTimeout$1;-><init>(Lcom/android/okhttp/okio/AsyncTimeout;Lcom/android/okhttp/okio/Sink;)V
 HSPLcom/android/okhttp/okio/AsyncTimeout$1;->flush()V+]Lcom/android/okhttp/okio/AsyncTimeout;Lcom/android/okhttp/okio/Okio$3;]Lcom/android/okhttp/okio/Sink;Lcom/android/okhttp/okio/Okio$1;
 HSPLcom/android/okhttp/okio/AsyncTimeout$1;->timeout()Lcom/android/okhttp/okio/Timeout;
@@ -622,6 +670,7 @@
 HSPLcom/android/okhttp/okio/Buffer;->readByte()B+]Lcom/android/okhttp/okio/Segment;Lcom/android/okhttp/okio/Segment;
 HSPLcom/android/okhttp/okio/Buffer;->readByteArray()[B+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;
 HSPLcom/android/okhttp/okio/Buffer;->readByteArray(J)[B+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;
+HSPLcom/android/okhttp/okio/Buffer;->readByteString()Lcom/android/okhttp/okio/ByteString;
 HSPLcom/android/okhttp/okio/Buffer;->readFully([B)V+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;
 HSPLcom/android/okhttp/okio/Buffer;->readHexadecimalUnsignedLong()J+]Lcom/android/okhttp/okio/Segment;Lcom/android/okhttp/okio/Segment;
 HSPLcom/android/okhttp/okio/Buffer;->readInt()I+]Lcom/android/okhttp/okio/Segment;Lcom/android/okhttp/okio/Segment;]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;
@@ -637,11 +686,14 @@
 HSPLcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/Buffer;J)V+]Lcom/android/okhttp/okio/Segment;Lcom/android/okhttp/okio/Segment;
 HSPLcom/android/okhttp/okio/Buffer;->write([BII)Lcom/android/okhttp/okio/Buffer;+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;
 HSPLcom/android/okhttp/okio/Buffer;->writeByte(I)Lcom/android/okhttp/okio/Buffer;+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;
+HSPLcom/android/okhttp/okio/Buffer;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/Buffer;+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;
 HSPLcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/Buffer;+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;
 HSPLcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/Buffer;+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;
 HSPLcom/android/okhttp/okio/Buffer;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/Buffer;+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;
+HSPLcom/android/okhttp/okio/ByteString;-><init>([B)V
+HSPLcom/android/okhttp/okio/ByteString;->hex()Ljava/lang/String;
 HSPLcom/android/okhttp/okio/ForwardingTimeout;-><init>(Lcom/android/okhttp/okio/Timeout;)V
-HSPLcom/android/okhttp/okio/ForwardingTimeout;->clearDeadline()Lcom/android/okhttp/okio/Timeout;+]Lcom/android/okhttp/okio/Timeout;Lcom/android/okhttp/okio/Okio$3;,Lcom/android/okhttp/okio/Timeout$1;
+HSPLcom/android/okhttp/okio/ForwardingTimeout;->clearDeadline()Lcom/android/okhttp/okio/Timeout;+]Lcom/android/okhttp/okio/Timeout;Lcom/android/okhttp/okio/Timeout$1;,Lcom/android/okhttp/okio/Okio$3;
 HSPLcom/android/okhttp/okio/ForwardingTimeout;->deadlineNanoTime(J)Lcom/android/okhttp/okio/Timeout;+]Lcom/android/okhttp/okio/Timeout;Lcom/android/okhttp/okio/Okio$3;
 HSPLcom/android/okhttp/okio/ForwardingTimeout;->delegate()Lcom/android/okhttp/okio/Timeout;
 HSPLcom/android/okhttp/okio/ForwardingTimeout;->hasDeadline()Z+]Lcom/android/okhttp/okio/Timeout;Lcom/android/okhttp/okio/Okio$3;
@@ -682,11 +734,13 @@
 HSPLcom/android/okhttp/okio/RealBufferedSink;->access$000(Lcom/android/okhttp/okio/RealBufferedSink;)Z
 HSPLcom/android/okhttp/okio/RealBufferedSink;->buffer()Lcom/android/okhttp/okio/Buffer;
 HSPLcom/android/okhttp/okio/RealBufferedSink;->close()V+]Lcom/android/okhttp/okio/Sink;megamorphic_types
+HSPLcom/android/okhttp/okio/RealBufferedSink;->emit()Lcom/android/okhttp/okio/BufferedSink;+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/Sink;Lcom/android/okhttp/internal/http/RetryableSink;,Lcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;
 HSPLcom/android/okhttp/okio/RealBufferedSink;->emitCompleteSegments()Lcom/android/okhttp/okio/BufferedSink;+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/Sink;megamorphic_types
 HSPLcom/android/okhttp/okio/RealBufferedSink;->flush()V+]Lcom/android/okhttp/okio/Sink;megamorphic_types
 HSPLcom/android/okhttp/okio/RealBufferedSink;->outputStream()Ljava/io/OutputStream;
 HSPLcom/android/okhttp/okio/RealBufferedSink;->timeout()Lcom/android/okhttp/okio/Timeout;+]Lcom/android/okhttp/okio/Sink;Lcom/android/okhttp/okio/AsyncTimeout$1;
 HSPLcom/android/okhttp/okio/RealBufferedSink;->write(Lcom/android/okhttp/okio/Buffer;J)V+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/RealBufferedSink;Lcom/android/okhttp/okio/RealBufferedSink;
+HSPLcom/android/okhttp/okio/RealBufferedSink;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/BufferedSink;+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/RealBufferedSink;Lcom/android/okhttp/okio/RealBufferedSink;
 HSPLcom/android/okhttp/okio/RealBufferedSink;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/BufferedSink;+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/RealBufferedSink;Lcom/android/okhttp/okio/RealBufferedSink;
 HSPLcom/android/okhttp/okio/RealBufferedSource$1;-><init>(Lcom/android/okhttp/okio/RealBufferedSource;)V
 HSPLcom/android/okhttp/okio/RealBufferedSource$1;->available()I
@@ -698,11 +752,11 @@
 HSPLcom/android/okhttp/okio/RealBufferedSource;->access$000(Lcom/android/okhttp/okio/RealBufferedSource;)Z
 HSPLcom/android/okhttp/okio/RealBufferedSource;->buffer()Lcom/android/okhttp/okio/Buffer;
 HSPLcom/android/okhttp/okio/RealBufferedSource;->close()V+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/Source;megamorphic_types
-HSPLcom/android/okhttp/okio/RealBufferedSource;->exhausted()Z+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/Source;Lcom/android/okhttp/okio/RealBufferedSource;,Lcom/android/okhttp/okio/AsyncTimeout$2;
+HSPLcom/android/okhttp/okio/RealBufferedSource;->exhausted()Z+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/Source;Lcom/android/okhttp/okio/AsyncTimeout$2;,Lcom/android/okhttp/okio/RealBufferedSource;
 HSPLcom/android/okhttp/okio/RealBufferedSource;->indexOf(B)J+]Lcom/android/okhttp/okio/RealBufferedSource;Lcom/android/okhttp/okio/RealBufferedSource;
 HSPLcom/android/okhttp/okio/RealBufferedSource;->indexOf(BJ)J+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/Source;Lcom/android/okhttp/okio/AsyncTimeout$2;,Lcom/android/okhttp/okio/Okio$2;
 HSPLcom/android/okhttp/okio/RealBufferedSource;->inputStream()Ljava/io/InputStream;
-HSPLcom/android/okhttp/okio/RealBufferedSource;->read(Lcom/android/okhttp/okio/Buffer;J)J+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/Source;Lcom/android/okhttp/internal/http/Http1xStream$FixedLengthSource;,Lcom/android/okhttp/okio/AsyncTimeout$2;,Lcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;,Lcom/android/okhttp/internal/http/HttpEngine$2;,Lcom/android/okhttp/internal/http/Http1xStream$UnknownLengthSource;
+HSPLcom/android/okhttp/okio/RealBufferedSource;->read(Lcom/android/okhttp/okio/Buffer;J)J+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/Source;Lcom/android/okhttp/okio/AsyncTimeout$2;,Lcom/android/okhttp/internal/http/Http1xStream$FixedLengthSource;,Lcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;,Lcom/android/okhttp/internal/http/HttpEngine$2;,Lcom/android/okhttp/Cache$CacheResponseBody$1;,Lcom/android/okhttp/internal/http/Http1xStream$UnknownLengthSource;
 HSPLcom/android/okhttp/okio/RealBufferedSource;->readHexadecimalUnsignedLong()J+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/RealBufferedSource;Lcom/android/okhttp/okio/RealBufferedSource;
 HSPLcom/android/okhttp/okio/RealBufferedSource;->readIntLe()I+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/RealBufferedSource;Lcom/android/okhttp/okio/RealBufferedSource;
 HSPLcom/android/okhttp/okio/RealBufferedSource;->readShort()S+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/RealBufferedSource;Lcom/android/okhttp/okio/RealBufferedSource;
@@ -710,7 +764,7 @@
 HSPLcom/android/okhttp/okio/RealBufferedSource;->request(J)Z+]Lcom/android/okhttp/okio/Source;Lcom/android/okhttp/okio/AsyncTimeout$2;,Lcom/android/okhttp/okio/RealBufferedSource;
 HSPLcom/android/okhttp/okio/RealBufferedSource;->require(J)V+]Lcom/android/okhttp/okio/RealBufferedSource;Lcom/android/okhttp/okio/RealBufferedSource;
 HSPLcom/android/okhttp/okio/RealBufferedSource;->skip(J)V+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;
-HSPLcom/android/okhttp/okio/RealBufferedSource;->timeout()Lcom/android/okhttp/okio/Timeout;+]Lcom/android/okhttp/okio/Source;Lcom/android/okhttp/internal/http/Http1xStream$FixedLengthSource;,Lcom/android/okhttp/okio/AsyncTimeout$2;
+HSPLcom/android/okhttp/okio/RealBufferedSource;->timeout()Lcom/android/okhttp/okio/Timeout;+]Lcom/android/okhttp/okio/Source;Lcom/android/okhttp/okio/AsyncTimeout$2;,Lcom/android/okhttp/internal/http/Http1xStream$FixedLengthSource;
 HSPLcom/android/okhttp/okio/Segment;-><init>()V
 HSPLcom/android/okhttp/okio/Segment;-><init>(Lcom/android/okhttp/okio/Segment;)V
 HSPLcom/android/okhttp/okio/Segment;-><init>([BII)V
@@ -731,6 +785,7 @@
 HSPLcom/android/okhttp/okio/Timeout;->timeout(JLjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/okio/Timeout;+]Ljava/util/concurrent/TimeUnit;missing_types
 HSPLcom/android/okhttp/okio/Timeout;->timeoutNanos()J
 HSPLcom/android/okhttp/okio/Util;->checkOffsetAndCount(JJJ)V
+HSPLcom/android/okhttp/okio/Util;->reverseBytesInt(I)I
 HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;-><init>([BI)V
 HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;->fromInputStream(ILjava/io/InputStream;)Lcom/android/org/bouncycastle/asn1/ASN1BitString;+]Ljava/io/InputStream;Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;
 HSPLcom/android/org/bouncycastle/asn1/ASN1EncodableVector;-><init>()V
@@ -754,8 +809,10 @@
 HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->getValue()Ljava/math/BigInteger;
 HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->isMalformed([B)Z
 HSPLcom/android/org/bouncycastle/asn1/ASN1Object;-><init>()V
+HSPLcom/android/org/bouncycastle/asn1/ASN1Object;->getEncoded()[B
 HSPLcom/android/org/bouncycastle/asn1/ASN1Object;->getEncoded(Ljava/lang/String;)[B+]Lcom/android/org/bouncycastle/asn1/ASN1Object;Lcom/android/org/bouncycastle/asn1/ASN1Integer;,Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;,Lcom/android/org/bouncycastle/asn1/DERSequence;]Ljava/io/ByteArrayOutputStream;Ljava/io/ByteArrayOutputStream;
 HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle;-><init>([B)V
+HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle;->hashCode()I
 HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;-><init>([B)V+]Ljava/lang/String;missing_types]Ljava/lang/StringBuffer;missing_types
 HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->asn1Equals(Lcom/android/org/bouncycastle/asn1/ASN1Primitive;)Z
@@ -765,13 +822,13 @@
 HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->getBody()[B
 HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
 HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;
+HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->hashCode()I+]Ljava/lang/String;Ljava/lang/String;
 HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->writeField(Ljava/io/ByteArrayOutputStream;J)V
 HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;-><init>(Ljava/io/OutputStream;)V
 HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->write(I)V+]Ljava/io/OutputStream;Ljava/io/ByteArrayOutputStream;
-HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->writeLength(I)V+]Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;Lcom/android/org/bouncycastle/asn1/DEROutputStream;
-HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->writeObject(Lcom/android/org/bouncycastle/asn1/ASN1Encodable;)V+]Lcom/android/org/bouncycastle/asn1/ASN1Encodable;Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;]Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;Lcom/android/org/bouncycastle/asn1/DEROutputStream;
+HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->writeLength(I)V+]Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;Lcom/android/org/bouncycastle/asn1/DEROutputStream;,Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;
+HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->writeObject(Lcom/android/org/bouncycastle/asn1/ASN1Encodable;)V+]Lcom/android/org/bouncycastle/asn1/ASN1Encodable;Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;,Lcom/android/org/bouncycastle/asn1/pkcs/PrivateKeyInfo;]Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;Lcom/android/org/bouncycastle/asn1/DEROutputStream;,Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;
 HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;-><init>()V
-HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->fromByteArray([B)Lcom/android/org/bouncycastle/asn1/ASN1Primitive;+]Lcom/android/org/bouncycastle/asn1/ASN1InputStream;Lcom/android/org/bouncycastle/asn1/ASN1InputStream;
 HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->toASN1Primitive()Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
 HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->toDERObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
@@ -782,9 +839,17 @@
 HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->getObjects()Ljava/util/Enumeration;
 HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->size()I
 HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->toDERObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
+HSPLcom/android/org/bouncycastle/asn1/ASN1Set;-><init>()V
+HSPLcom/android/org/bouncycastle/asn1/ASN1Set;-><init>(Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;Z)V+]Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;
+HSPLcom/android/org/bouncycastle/asn1/ASN1Set;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/ASN1Set;
+HSPLcom/android/org/bouncycastle/asn1/ASN1Set;->getObjectAt(I)Lcom/android/org/bouncycastle/asn1/ASN1Encodable;
+HSPLcom/android/org/bouncycastle/asn1/ASN1Set;->getObjects()Ljava/util/Enumeration;
+HSPLcom/android/org/bouncycastle/asn1/ASN1Set;->size()I
+HSPLcom/android/org/bouncycastle/asn1/ASN1TaggedObject;->getObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive;+]Lcom/android/org/bouncycastle/asn1/ASN1Encodable;Lcom/android/org/bouncycastle/asn1/ASN1Integer;,Lcom/android/org/bouncycastle/asn1/DLSequence;
 HSPLcom/android/org/bouncycastle/asn1/DERBitString;-><init>([BI)V
 HSPLcom/android/org/bouncycastle/asn1/DERBitString;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/DERBitString;
 HSPLcom/android/org/bouncycastle/asn1/DERFactory;->createSequence(Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;)Lcom/android/org/bouncycastle/asn1/ASN1Sequence;
+HSPLcom/android/org/bouncycastle/asn1/DERNull;->encodedLength()I
 HSPLcom/android/org/bouncycastle/asn1/DEROutputStream;-><init>(Ljava/io/OutputStream;)V
 HSPLcom/android/org/bouncycastle/asn1/DERSequence;-><init>()V
 HSPLcom/android/org/bouncycastle/asn1/DERSequence;-><init>(Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;)V
@@ -792,7 +857,7 @@
 HSPLcom/android/org/bouncycastle/asn1/DERSequence;->getBodyLength()I+]Lcom/android/org/bouncycastle/asn1/ASN1Encodable;Lcom/android/org/bouncycastle/asn1/ASN1Integer;,Lcom/android/org/bouncycastle/asn1/DERSequence;,Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;]Lcom/android/org/bouncycastle/asn1/ASN1Primitive;Lcom/android/org/bouncycastle/asn1/ASN1Integer;,Lcom/android/org/bouncycastle/asn1/DERSequence;,Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;
 HSPLcom/android/org/bouncycastle/asn1/DLSequence;-><init>(Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;)V
 HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->getRemaining()I
-HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->read()I+]Ljava/io/InputStream;Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;,Lcom/android/org/bouncycastle/asn1/ASN1InputStream;]Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;
+HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->read()I+]Ljava/io/InputStream;Lcom/android/org/bouncycastle/asn1/ASN1InputStream;,Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;]Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;
 HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->read([BII)I+]Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;]Ljava/io/InputStream;Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;,Lcom/android/org/bouncycastle/asn1/ASN1InputStream;
 HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->toByteArray()[B+]Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;
 HSPLcom/android/org/bouncycastle/asn1/LimitedInputStream;-><init>(Ljava/io/InputStream;I)V
@@ -801,7 +866,7 @@
 HSPLcom/android/org/bouncycastle/asn1/OIDTokenizer;->hasMoreTokens()Z
 HSPLcom/android/org/bouncycastle/asn1/OIDTokenizer;->nextToken()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;
 HSPLcom/android/org/bouncycastle/asn1/StreamUtil;->calculateBodyLength(I)I
-HSPLcom/android/org/bouncycastle/asn1/StreamUtil;->findLimit(Ljava/io/InputStream;)I+]Lcom/android/org/bouncycastle/asn1/LimitedInputStream;Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;]Ljava/lang/Runtime;Ljava/lang/Runtime;
+HSPLcom/android/org/bouncycastle/asn1/StreamUtil;->findLimit(Ljava/io/InputStream;)I+]Ljava/lang/Runtime;Ljava/lang/Runtime;]Lcom/android/org/bouncycastle/asn1/LimitedInputStream;Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;
 HSPLcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;-><init>(Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;Lcom/android/org/bouncycastle/asn1/ASN1Encodable;)V
 HSPLcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;-><init>(Lcom/android/org/bouncycastle/asn1/ASN1Sequence;)V+]Lcom/android/org/bouncycastle/asn1/ASN1Sequence;Lcom/android/org/bouncycastle/asn1/DLSequence;
 HSPLcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;->getAlgorithm()Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;
@@ -811,21 +876,43 @@
 HSPLcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;-><init>(Lcom/android/org/bouncycastle/asn1/ASN1Sequence;)V+]Ljava/util/Enumeration;Lcom/android/org/bouncycastle/asn1/ASN1Sequence$1;]Lcom/android/org/bouncycastle/asn1/ASN1Sequence;Lcom/android/org/bouncycastle/asn1/DLSequence;
 HSPLcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
 HSPLcom/android/org/bouncycastle/crypto/BufferedBlockCipher;-><init>()V
+HSPLcom/android/org/bouncycastle/crypto/BufferedBlockCipher;->getBlockSize()I+]Lcom/android/org/bouncycastle/crypto/BlockCipher;Lcom/android/org/bouncycastle/crypto/engines/AESEngine;,Lcom/android/org/bouncycastle/crypto/modes/CBCBlockCipher;
+HSPLcom/android/org/bouncycastle/crypto/BufferedBlockCipher;->getUnderlyingCipher()Lcom/android/org/bouncycastle/crypto/BlockCipher;
+HSPLcom/android/org/bouncycastle/crypto/BufferedBlockCipher;->reset()V+]Lcom/android/org/bouncycastle/crypto/BlockCipher;Lcom/android/org/bouncycastle/crypto/engines/AESEngine;,Lcom/android/org/bouncycastle/crypto/modes/CBCBlockCipher;,Lcom/android/org/bouncycastle/crypto/modes/SICBlockCipher;,Lcom/android/org/bouncycastle/crypto/modes/CFBBlockCipher;
 HSPLcom/android/org/bouncycastle/crypto/CryptoServicesRegistrar;->getSecureRandom()Ljava/security/SecureRandom;
 HSPLcom/android/org/bouncycastle/crypto/PBEParametersGenerator;-><init>()V
+HSPLcom/android/org/bouncycastle/crypto/PBEParametersGenerator;->PKCS5PasswordToUTF8Bytes([C)[B
 HSPLcom/android/org/bouncycastle/crypto/PBEParametersGenerator;->init([B[BI)V
 HSPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactory;->getSHA1()Lcom/android/org/bouncycastle/crypto/Digest;
 HSPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL;->getSHA1()Lcom/android/org/bouncycastle/crypto/Digest;
 HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest$SHA1;-><init>()V
 HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;-><init>(Ljava/lang/String;I)V
 HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->doFinal([BI)I+]Ljava/security/MessageDigest;missing_types
-HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->getDigestSize()I
+HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->getByteLength()I
+HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->getDigestSize()I+]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;
 HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->reset()V
 HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->update([BII)V+]Ljava/security/MessageDigest;missing_types
+HSPLcom/android/org/bouncycastle/crypto/engines/AESEngine;-><init>()V
+HSPLcom/android/org/bouncycastle/crypto/engines/AESEngine;->getBlockSize()I
+HSPLcom/android/org/bouncycastle/crypto/engines/DESEngine;-><clinit>()V
+HSPLcom/android/org/bouncycastle/crypto/engines/DESEngine;-><init>()V
+HSPLcom/android/org/bouncycastle/crypto/engines/DESEngine;->generateWorkingKey(Z[B)[I
 HSPLcom/android/org/bouncycastle/crypto/macs/HMac;-><clinit>()V
+HSPLcom/android/org/bouncycastle/crypto/macs/HMac;-><init>(Lcom/android/org/bouncycastle/crypto/Digest;)V
+HSPLcom/android/org/bouncycastle/crypto/macs/HMac;-><init>(Lcom/android/org/bouncycastle/crypto/Digest;I)V
+HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->doFinal([BI)I+]Lcom/android/org/bouncycastle/crypto/Digest;Lcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest$SHA1;,Lcom/android/org/bouncycastle/crypto/digests/SHA1Digest;,Lcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest$SHA512;]Lcom/android/org/bouncycastle/util/Memoable;Lcom/android/org/bouncycastle/crypto/digests/SHA1Digest;
+HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->getByteLength(Lcom/android/org/bouncycastle/crypto/Digest;)I
+HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->getMacSize()I
+HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->init(Lcom/android/org/bouncycastle/crypto/CipherParameters;)V+]Lcom/android/org/bouncycastle/crypto/Digest;Lcom/android/org/bouncycastle/crypto/digests/SHA1Digest;]Lcom/android/org/bouncycastle/util/Memoable;Lcom/android/org/bouncycastle/crypto/digests/SHA1Digest;]Lcom/android/org/bouncycastle/crypto/params/KeyParameter;Lcom/android/org/bouncycastle/crypto/params/KeyParameter;
+HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->update([BII)V+]Lcom/android/org/bouncycastle/crypto/Digest;Lcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest$SHA1;
+HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->xorPad([BIB)V
+HSPLcom/android/org/bouncycastle/crypto/modes/CBCBlockCipher;-><init>(Lcom/android/org/bouncycastle/crypto/BlockCipher;)V
+HSPLcom/android/org/bouncycastle/crypto/modes/CBCBlockCipher;->getBlockSize()I
+HSPLcom/android/org/bouncycastle/crypto/modes/CBCBlockCipher;->init(ZLcom/android/org/bouncycastle/crypto/CipherParameters;)V
+HSPLcom/android/org/bouncycastle/crypto/modes/CBCBlockCipher;->reset()V
 HSPLcom/android/org/bouncycastle/crypto/paddings/PKCS7Padding;-><init>()V
 HSPLcom/android/org/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;-><init>(Lcom/android/org/bouncycastle/crypto/BlockCipher;)V
-HSPLcom/android/org/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;-><init>(Lcom/android/org/bouncycastle/crypto/BlockCipher;Lcom/android/org/bouncycastle/crypto/paddings/BlockCipherPadding;)V+]Lcom/android/org/bouncycastle/crypto/BlockCipher;Lcom/android/org/bouncycastle/crypto/engines/AESEngine;,Lcom/android/org/bouncycastle/crypto/engines/BlowfishEngine;,Lcom/android/org/bouncycastle/crypto/modes/CBCBlockCipher;
+HSPLcom/android/org/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;-><init>(Lcom/android/org/bouncycastle/crypto/BlockCipher;Lcom/android/org/bouncycastle/crypto/paddings/BlockCipherPadding;)V+]Lcom/android/org/bouncycastle/crypto/BlockCipher;megamorphic_types
 HSPLcom/android/org/bouncycastle/crypto/params/AsymmetricKeyParameter;-><init>(Z)V
 HSPLcom/android/org/bouncycastle/crypto/params/DSAKeyParameters;-><init>(ZLcom/android/org/bouncycastle/crypto/params/DSAParameters;)V
 HSPLcom/android/org/bouncycastle/crypto/params/DSAParameters;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
@@ -836,9 +923,13 @@
 HSPLcom/android/org/bouncycastle/crypto/params/KeyParameter;-><init>([B)V
 HSPLcom/android/org/bouncycastle/crypto/params/KeyParameter;-><init>([BII)V
 HSPLcom/android/org/bouncycastle/crypto/params/KeyParameter;->getKey()[B
+HSPLcom/android/org/bouncycastle/crypto/params/ParametersWithIV;-><init>(Lcom/android/org/bouncycastle/crypto/CipherParameters;[BII)V
+HSPLcom/android/org/bouncycastle/crypto/params/ParametersWithIV;->getIV()[B
+HSPLcom/android/org/bouncycastle/crypto/params/ParametersWithIV;->getParameters()Lcom/android/org/bouncycastle/crypto/CipherParameters;
 HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->getParams()Ljava/security/interfaces/DSAParams;
 HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->getY()Ljava/math/BigInteger;
 HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->hashCode()I+]Ljava/math/BigInteger;missing_types]Ljava/security/interfaces/DSAParams;missing_types]Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;
+HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->readObject(Ljava/io/ObjectInputStream;)V+]Ljava/math/BigInteger;missing_types]Ljava/io/ObjectInputStream;missing_types
 HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSAUtil;->toDSAParameters(Ljava/security/interfaces/DSAParams;)Lcom/android/org/bouncycastle/crypto/params/DSAParameters;+]Ljava/security/interfaces/DSAParams;Ljava/security/spec/DSAParameterSpec;
 HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$Std;-><init>()V
 HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$StoreEntry;-><init>(Lcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;Ljava/lang/String;Ljava/security/cert/Certificate;)V
@@ -849,14 +940,34 @@
 HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;
 HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->engineLoad(Ljava/io/InputStream;[C)V+]Lcom/android/org/bouncycastle/crypto/macs/HMac;Lcom/android/org/bouncycastle/crypto/macs/HMac;]Ljava/io/DataInputStream;Ljava/io/DataInputStream;]Ljava/util/Hashtable;Ljava/util/Hashtable;]Lcom/android/org/bouncycastle/crypto/PBEParametersGenerator;Lcom/android/org/bouncycastle/crypto/generators/PKCS12ParametersGenerator;]Lcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;Lcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$Std;
 HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->engineSetCertificateEntry(Ljava/lang/String;Ljava/security/cert/Certificate;)V+]Ljava/util/Hashtable;Ljava/util/Hashtable;]Lcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$StoreEntry;Lcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$StoreEntry;
+HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->engineSize()I
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/AES$ECB$1;-><init>()V
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/AES$ECB$1;->get()Lcom/android/org/bouncycastle/crypto/BlockCipher;
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/AES$ECB;-><init>()V
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BCPBEKey;-><init>(Ljava/lang/String;Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;IIIILjavax/crypto/spec/PBEKeySpec;Lcom/android/org/bouncycastle/crypto/CipherParameters;)V+]Ljavax/crypto/spec/PBEKeySpec;Ljavax/crypto/spec/PBEKeySpec;
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BCPBEKey;->getEncoded()[B+]Lcom/android/org/bouncycastle/crypto/params/KeyParameter;Lcom/android/org/bouncycastle/crypto/params/KeyParameter;
 HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$BufferedGenericBlockCipher;-><init>(Lcom/android/org/bouncycastle/crypto/BlockCipher;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher;->engineInit(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V+]Ljava/lang/String;missing_types]Lcom/android/org/bouncycastle/crypto/BlockCipher;Lcom/android/org/bouncycastle/crypto/engines/AESEngine;,Lcom/android/org/bouncycastle/crypto/engines/BlowfishEngine;]Ljava/security/Key;missing_types]Ljava/lang/Class;missing_types]Lcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$GenericBlockCipher;Lcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$BufferedGenericBlockCipher;]Ljavax/crypto/spec/IvParameterSpec;Ljavax/crypto/spec/IvParameterSpec;
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$BufferedGenericBlockCipher;->doFinal([BI)I+]Lcom/android/org/bouncycastle/crypto/BufferedBlockCipher;Lcom/android/org/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$BufferedGenericBlockCipher;->getOutputSize(I)I+]Lcom/android/org/bouncycastle/crypto/BufferedBlockCipher;Lcom/android/org/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$BufferedGenericBlockCipher;->init(ZLcom/android/org/bouncycastle/crypto/CipherParameters;)V+]Lcom/android/org/bouncycastle/crypto/BufferedBlockCipher;Lcom/android/org/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$BufferedGenericBlockCipher;->processBytes([BII[BI)I+]Lcom/android/org/bouncycastle/crypto/BufferedBlockCipher;Lcom/android/org/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher;
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher;-><init>(Lcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BlockCipherProvider;)V+]Lcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BlockCipherProvider;Lcom/android/org/bouncycastle/jcajce/provider/symmetric/AES$ECB$1;
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher;->engineDoFinal([BII)[B+]Lcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher;Lcom/android/org/bouncycastle/jcajce/provider/symmetric/AES$ECB;]Lcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$GenericBlockCipher;Lcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$BufferedGenericBlockCipher;
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher;->engineGetOutputSize(I)I+]Lcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$GenericBlockCipher;Lcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$BufferedGenericBlockCipher;
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher;->engineInit(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V+]Ljava/lang/String;missing_types]Lcom/android/org/bouncycastle/crypto/BlockCipher;Lcom/android/org/bouncycastle/crypto/engines/AESEngine;,Lcom/android/org/bouncycastle/crypto/engines/BlowfishEngine;]Ljava/security/Key;missing_types]Ljava/lang/Class;missing_types]Lcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$GenericBlockCipher;Lcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$BufferedGenericBlockCipher;]Ljavax/crypto/spec/IvParameterSpec;Ljavax/crypto/spec/IvParameterSpec;]Ljavax/crypto/SecretKey;Lcom/android/org/bouncycastle/jcajce/PKCS12Key;
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseSecretKeyFactory;-><init>(Ljava/lang/String;Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;)V
 HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher;-><init>()V
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/PBE$Util;->convertPassword(ILjavax/crypto/spec/PBEKeySpec;)[B
 HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/PBE$Util;->makePBEGenerator(II)Lcom/android/org/bouncycastle/crypto/PBEParametersGenerator;
+HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/PBE$Util;->makePBEMacParameters(Ljavax/crypto/spec/PBEKeySpec;III)Lcom/android/org/bouncycastle/crypto/CipherParameters;+]Ljavax/crypto/spec/PBEKeySpec;Ljavax/crypto/spec/PBEKeySpec;]Lcom/android/org/bouncycastle/crypto/PBEParametersGenerator;Lcom/android/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator;
+HSPLcom/android/org/bouncycastle/jcajce/util/BCJcaJceHelper;-><init>()V
+HSPLcom/android/org/bouncycastle/jcajce/util/BCJcaJceHelper;->getBouncyCastleProvider()Ljava/security/Provider;
 HSPLcom/android/org/bouncycastle/jcajce/util/DefaultJcaJceHelper;-><init>()V
+HSPLcom/android/org/bouncycastle/jcajce/util/ProviderJcaJceHelper;-><init>(Ljava/security/Provider;)V
 HSPLcom/android/org/bouncycastle/jce/provider/CertStoreCollectionSpi;-><init>(Ljava/security/cert/CertStoreParameters;)V
 HSPLcom/android/org/bouncycastle/util/Arrays;->areEqual([B[B)Z
-HSPLcom/android/org/bouncycastle/util/Arrays;->clone([B)[B
+HSPLcom/android/org/bouncycastle/util/Arrays;->clone([B)[B+][B[B
+HSPLcom/android/org/bouncycastle/util/Arrays;->fill([BB)V
 HSPLcom/android/org/bouncycastle/util/Arrays;->hashCode([B)I
 HSPLcom/android/org/bouncycastle/util/BigIntegers;-><clinit>()V
 HSPLcom/android/org/bouncycastle/util/Integers;->valueOf(I)Ljava/lang/Integer;
@@ -864,6 +975,8 @@
 HSPLcom/android/org/bouncycastle/util/Properties$1;-><init>(Ljava/lang/String;)V
 HSPLcom/android/org/bouncycastle/util/Properties$1;->run()Ljava/lang/Object;
 HSPLcom/android/org/bouncycastle/util/Properties;->isOverrideSet(Ljava/lang/String;)Z
+HSPLcom/android/org/bouncycastle/util/Strings;->toUTF8ByteArray([C)[B+]Ljava/io/ByteArrayOutputStream;Ljava/io/ByteArrayOutputStream;
+HSPLcom/android/org/bouncycastle/util/Strings;->toUTF8ByteArray([CLjava/io/OutputStream;)V+]Ljava/io/OutputStream;Ljava/io/ByteArrayOutputStream;
 HSPLcom/android/org/bouncycastle/util/Strings;->toUpperCase(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;
 HSPLcom/android/org/bouncycastle/util/io/Streams;->readFully(Ljava/io/InputStream;[B)I
 HSPLcom/android/org/bouncycastle/util/io/Streams;->readFully(Ljava/io/InputStream;[BII)I+]Ljava/io/InputStream;Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;,Lcom/android/org/bouncycastle/asn1/ASN1InputStream;
@@ -897,7 +1010,7 @@
 HSPLcom/android/org/kxml2/io/KXmlParser;->readComment(Z)Ljava/lang/String;
 HSPLcom/android/org/kxml2/io/KXmlParser;->readEndTag()V
 HSPLcom/android/org/kxml2/io/KXmlParser;->readEntity(Ljava/lang/StringBuilder;ZZLcom/android/org/kxml2/io/KXmlParser$ValueContext;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Map;Ljava/util/HashMap;
-HSPLcom/android/org/kxml2/io/KXmlParser;->readName()Ljava/lang/String;+]Llibcore/internal/StringPool;Llibcore/internal/StringPool;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLcom/android/org/kxml2/io/KXmlParser;->readName()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Llibcore/internal/StringPool;Llibcore/internal/StringPool;
 HSPLcom/android/org/kxml2/io/KXmlParser;->readUntil([CZ)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Llibcore/internal/StringPool;Llibcore/internal/StringPool;
 HSPLcom/android/org/kxml2/io/KXmlParser;->readValue(CZZLcom/android/org/kxml2/io/KXmlParser$ValueContext;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Llibcore/internal/StringPool;Llibcore/internal/StringPool;
 HSPLcom/android/org/kxml2/io/KXmlParser;->readXmlDeclaration()V
@@ -917,7 +1030,7 @@
 HSPLcom/android/org/kxml2/io/KXmlSerializer;->flushBuffer()V+]Ljava/io/Writer;Ljava/io/OutputStreamWriter;
 HSPLcom/android/org/kxml2/io/KXmlSerializer;->setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Lcom/android/org/kxml2/io/KXmlSerializer;Lcom/android/org/kxml2/io/KXmlSerializer;
 HSPLcom/android/org/kxml2/io/KXmlSerializer;->setOutput(Ljava/io/Writer;)V
-HSPLcom/android/org/kxml2/io/KXmlSerializer;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V+]Ljava/lang/Boolean;Ljava/lang/Boolean;
+HSPLcom/android/org/kxml2/io/KXmlSerializer;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V+]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/String;Ljava/lang/String;
 HSPLcom/android/org/kxml2/io/KXmlSerializer;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
 HSPLcom/android/org/kxml2/io/KXmlSerializer;->writeEscaped(Ljava/lang/String;I)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLdalvik/system/AppSpecializationHooks;->handleCompatChangesBeforeBindingApplication()V
@@ -925,8 +1038,8 @@
 HSPLdalvik/system/BaseDexClassLoader;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;[Ljava/lang/ClassLoader;)V
 HSPLdalvik/system/BaseDexClassLoader;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;[Ljava/lang/ClassLoader;Z)V
 HSPLdalvik/system/BaseDexClassLoader;->addNativePath(Ljava/util/Collection;)V+]Ldalvik/system/DexPathList;Ldalvik/system/DexPathList;
-HSPLdalvik/system/BaseDexClassLoader;->findClass(Ljava/lang/String;)Ljava/lang/Class;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ldalvik/system/DexPathList;Ldalvik/system/DexPathList;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/lang/ClassLoader;Ldalvik/system/PathClassLoader;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/lang/ClassNotFoundException;Ljava/lang/ClassNotFoundException;
-HSPLdalvik/system/BaseDexClassLoader;->findLibrary(Ljava/lang/String;)Ljava/lang/String;
+HSPLdalvik/system/BaseDexClassLoader;->findClass(Ljava/lang/String;)Ljava/lang/Class;+]Ldalvik/system/DexPathList;Ldalvik/system/DexPathList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/lang/ClassLoader;Ldalvik/system/PathClassLoader;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/lang/ClassNotFoundException;Ljava/lang/ClassNotFoundException;
+HSPLdalvik/system/BaseDexClassLoader;->findLibrary(Ljava/lang/String;)Ljava/lang/String;+]Ldalvik/system/DexPathList;Ldalvik/system/DexPathList;
 HSPLdalvik/system/BaseDexClassLoader;->findResource(Ljava/lang/String;)Ljava/net/URL;+]Ldalvik/system/DexPathList;Ldalvik/system/DexPathList;]Ljava/lang/ClassLoader;Ldalvik/system/PathClassLoader;
 HSPLdalvik/system/BaseDexClassLoader;->findResources(Ljava/lang/String;)Ljava/util/Enumeration;+]Ldalvik/system/DexPathList;Ldalvik/system/DexPathList;
 HSPLdalvik/system/BaseDexClassLoader;->getLdLibraryPath()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/List;Ljava/util/ArrayList;]Ldalvik/system/DexPathList;Ldalvik/system/DexPathList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
@@ -992,7 +1105,7 @@
 HSPLdalvik/system/DexPathList;->makePathElements(Ljava/util/List;)[Ldalvik/system/DexPathList$NativeLibraryElement;+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
 HSPLdalvik/system/DexPathList;->maybeRunBackgroundVerification(Ljava/lang/ClassLoader;)V
 HSPLdalvik/system/DexPathList;->splitDexPath(Ljava/lang/String;)Ljava/util/List;
-HSPLdalvik/system/DexPathList;->splitPaths(Ljava/lang/String;Z)Ljava/util/List;
+HSPLdalvik/system/DexPathList;->splitPaths(Ljava/lang/String;Z)Ljava/util/List;+]Ljava/lang/String;Ljava/lang/String;]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLdalvik/system/DexPathList;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLdalvik/system/PathClassLoader;-><init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V
 HSPLdalvik/system/PathClassLoader;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V
@@ -1003,6 +1116,8 @@
 HSPLdalvik/system/SocketTagger;-><init>()V
 HSPLdalvik/system/SocketTagger;->get()Ldalvik/system/SocketTagger;
 HSPLdalvik/system/SocketTagger;->set(Ldalvik/system/SocketTagger;)V
+HSPLdalvik/system/SocketTagger;->tag(Ljava/net/Socket;)V
+HSPLdalvik/system/SocketTagger;->untag(Ljava/net/Socket;)V
 HSPLdalvik/system/VMRuntime;->getInstructionSet(Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Map;Ljava/util/HashMap;
 HSPLdalvik/system/VMRuntime;->getRuntime()Ldalvik/system/VMRuntime;
 HSPLdalvik/system/VMRuntime;->getTargetSdkVersion()I
@@ -1057,7 +1172,7 @@
 HSPLjava/io/BufferedOutputStream;->write([BII)V+]Ljava/io/OutputStream;missing_types
 HSPLjava/io/BufferedReader;-><init>(Ljava/io/Reader;)V
 HSPLjava/io/BufferedReader;-><init>(Ljava/io/Reader;I)V
-HSPLjava/io/BufferedReader;->close()V+]Ljava/io/Reader;Ljava/io/InputStreamReader;,Ljava/io/FileReader;
+HSPLjava/io/BufferedReader;->close()V+]Ljava/io/Reader;missing_types
 HSPLjava/io/BufferedReader;->ensureOpen()V
 HSPLjava/io/BufferedReader;->fill()V+]Ljava/io/Reader;Ljava/io/StringReader;,Ljava/io/InputStreamReader;,Ljava/io/FileReader;
 HSPLjava/io/BufferedReader;->read()I
@@ -1069,12 +1184,13 @@
 HSPLjava/io/BufferedWriter;-><init>(Ljava/io/Writer;I)V
 HSPLjava/io/BufferedWriter;->close()V+]Ljava/io/Writer;Ljava/io/OutputStreamWriter;,Ljava/io/FileWriter;]Ljava/io/BufferedWriter;Ljava/io/BufferedWriter;
 HSPLjava/io/BufferedWriter;->ensureOpen()V
-HSPLjava/io/BufferedWriter;->flush()V+]Ljava/io/Writer;Ljava/io/OutputStreamWriter;,Ljava/io/FileWriter;,Ljava/io/StringWriter;]Ljava/io/BufferedWriter;Ljava/io/BufferedWriter;
+HSPLjava/io/BufferedWriter;->flush()V+]Ljava/io/Writer;Ljava/io/OutputStreamWriter;,Ljava/io/FileWriter;,Ljava/io/PrintWriter;,Ljava/io/StringWriter;]Ljava/io/BufferedWriter;Ljava/io/BufferedWriter;
 HSPLjava/io/BufferedWriter;->flushBuffer()V+]Ljava/io/Writer;missing_types
 HSPLjava/io/BufferedWriter;->min(II)I
 HSPLjava/io/BufferedWriter;->newLine()V+]Ljava/io/BufferedWriter;Ljava/io/BufferedWriter;
 HSPLjava/io/BufferedWriter;->write(I)V+]Ljava/io/BufferedWriter;Ljava/io/BufferedWriter;
 HSPLjava/io/BufferedWriter;->write(Ljava/lang/String;II)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/BufferedWriter;Ljava/io/BufferedWriter;
+HSPLjava/io/BufferedWriter;->write([CII)V+]Ljava/io/Writer;Ljava/io/FileWriter;]Ljava/io/BufferedWriter;Ljava/io/BufferedWriter;
 HSPLjava/io/ByteArrayInputStream;-><init>([B)V
 HSPLjava/io/ByteArrayInputStream;-><init>([BII)V
 HSPLjava/io/ByteArrayInputStream;->available()I
@@ -1107,7 +1223,7 @@
 HSPLjava/io/CharArrayWriter;->write(I)V
 HSPLjava/io/CharArrayWriter;->write([CII)V
 HSPLjava/io/DataInputStream;-><init>(Ljava/io/InputStream;)V
-HSPLjava/io/DataInputStream;->read([B)I+]Ljava/io/InputStream;Ljava/io/BufferedInputStream;,Ljava/io/FileInputStream;,Ljava/io/ByteArrayInputStream;,Landroid/net/LocalSocketImpl$SocketInputStream;,Landroid/content/res/AssetManager$AssetInputStream;
+HSPLjava/io/DataInputStream;->read([B)I+]Ljava/io/InputStream;missing_types
 HSPLjava/io/DataInputStream;->read([BII)I+]Ljava/io/InputStream;megamorphic_types
 HSPLjava/io/DataInputStream;->readBoolean()Z+]Ljava/io/InputStream;missing_types
 HSPLjava/io/DataInputStream;->readByte()B+]Ljava/io/InputStream;missing_types
@@ -1130,7 +1246,7 @@
 HSPLjava/io/DataOutputStream;->writeByte(I)V+]Ljava/io/OutputStream;missing_types
 HSPLjava/io/DataOutputStream;->writeInt(I)V+]Ljava/io/OutputStream;megamorphic_types
 HSPLjava/io/DataOutputStream;->writeLong(J)V+]Ljava/io/OutputStream;missing_types
-HSPLjava/io/DataOutputStream;->writeShort(I)V+]Ljava/io/OutputStream;missing_types
+HSPLjava/io/DataOutputStream;->writeShort(I)V+]Ljava/io/OutputStream;megamorphic_types
 HSPLjava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V
 HSPLjava/io/DataOutputStream;->writeUTF(Ljava/lang/String;Ljava/io/DataOutput;)I+]Ljava/io/DataOutput;missing_types
 HSPLjava/io/EOFException;-><init>()V
@@ -1172,14 +1288,19 @@
 HSPLjava/io/File;->lastModified()J+]Ljava/io/File;missing_types]Ljava/io/FileSystem;Ljava/io/UnixFileSystem;
 HSPLjava/io/File;->length()J+]Ljava/io/File;missing_types]Ljava/io/FileSystem;Ljava/io/UnixFileSystem;
 HSPLjava/io/File;->list()[Ljava/lang/String;+]Ljava/io/File;Ljava/io/File;]Ljava/io/FileSystem;Ljava/io/UnixFileSystem;
+HSPLjava/io/File;->list(Ljava/io/FilenameFilter;)[Ljava/lang/String;+]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLjava/io/File;->listFiles()[Ljava/io/File;+]Ljava/io/File;Ljava/io/File;
-HSPLjava/io/File;->listFiles(Ljava/io/FileFilter;)[Ljava/io/File;+]Ljava/io/File;Ljava/io/File;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/io/FileFilter;missing_types
-HSPLjava/io/File;->listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File;+]Ljava/io/File;Ljava/io/File;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/io/FilenameFilter;Landroid/app/ContextImpl$1;
+HSPLjava/io/File;->listFiles(Ljava/io/FileFilter;)[Ljava/io/File;+]Ljava/io/File;Ljava/io/File;]Ljava/io/FileFilter;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLjava/io/File;->listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File;+]Ljava/io/File;Ljava/io/File;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/io/FilenameFilter;Landroid/app/ContextImpl$1;,Landroid/media/ThumbnailUtils$$ExternalSyntheticLambda0;
 HSPLjava/io/File;->mkdir()Z+]Ljava/io/File;Ljava/io/File;]Ljava/io/FileSystem;Ljava/io/UnixFileSystem;
 HSPLjava/io/File;->mkdirs()Z+]Ljava/io/File;Ljava/io/File;
 HSPLjava/io/File;->renameTo(Ljava/io/File;)Z+]Ljava/io/File;missing_types]Ljava/io/FileSystem;Ljava/io/UnixFileSystem;
+HSPLjava/io/File;->setExecutable(Z)Z+]Ljava/io/File;Ljava/io/File;
+HSPLjava/io/File;->setExecutable(ZZ)Z+]Ljava/io/File;Ljava/io/File;]Ljava/io/FileSystem;Ljava/io/UnixFileSystem;
 HSPLjava/io/File;->setLastModified(J)Z+]Ljava/io/File;Ljava/io/File;]Ljava/io/FileSystem;Ljava/io/UnixFileSystem;
 HSPLjava/io/File;->setReadable(ZZ)Z+]Ljava/io/File;Ljava/io/File;]Ljava/io/FileSystem;Ljava/io/UnixFileSystem;
+HSPLjava/io/File;->setWritable(Z)Z+]Ljava/io/File;Ljava/io/File;
+HSPLjava/io/File;->setWritable(ZZ)Z+]Ljava/io/File;Ljava/io/File;]Ljava/io/FileSystem;Ljava/io/UnixFileSystem;
 HSPLjava/io/File;->slashify(Ljava/lang/String;Z)Ljava/lang/String;
 HSPLjava/io/File;->toPath()Ljava/nio/file/Path;+]Ljava/nio/file/FileSystem;Lsun/nio/fs/LinuxFileSystem;
 HSPLjava/io/File;->toString()Ljava/lang/String;+]Ljava/io/File;Ljava/io/File;
@@ -1195,31 +1316,31 @@
 HSPLjava/io/FileDescriptor;->setInt$(I)V
 HSPLjava/io/FileDescriptor;->setOwnerId$(J)V
 HSPLjava/io/FileDescriptor;->valid()Z
-HSPLjava/io/FileInputStream;-><init>(Ljava/io/File;)V+]Ljava/io/File;missing_types]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLjava/io/FileInputStream;-><init>(Ljava/io/File;)V+]Ljava/io/File;missing_types]Ldalvik/system/CloseGuard;missing_types
 HSPLjava/io/FileInputStream;-><init>(Ljava/io/FileDescriptor;)V
 HSPLjava/io/FileInputStream;-><init>(Ljava/io/FileDescriptor;Z)V
 HSPLjava/io/FileInputStream;-><init>(Ljava/lang/String;)V
 HSPLjava/io/FileInputStream;->available()I
-HSPLjava/io/FileInputStream;->close()V+]Ljava/nio/channels/FileChannel;Lsun/nio/ch/FileChannelImpl;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
-HSPLjava/io/FileInputStream;->finalize()V+]Ljava/io/FileInputStream;missing_types]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLjava/io/FileInputStream;->close()V+]Ljava/nio/channels/FileChannel;Lsun/nio/ch/FileChannelImpl;]Ldalvik/system/CloseGuard;missing_types
+HSPLjava/io/FileInputStream;->finalize()V+]Ljava/io/FileInputStream;missing_types]Ldalvik/system/CloseGuard;missing_types
 HSPLjava/io/FileInputStream;->getChannel()Ljava/nio/channels/FileChannel;
 HSPLjava/io/FileInputStream;->getFD()Ljava/io/FileDescriptor;
-HSPLjava/io/FileInputStream;->read()I+]Ljava/io/FileInputStream;Ljava/io/FileInputStream;,Landroid/os/ParcelFileDescriptor$AutoCloseInputStream;
+HSPLjava/io/FileInputStream;->read()I+]Ljava/io/FileInputStream;missing_types
 HSPLjava/io/FileInputStream;->read([B)I+]Ljava/io/FileInputStream;missing_types
 HSPLjava/io/FileInputStream;->read([BII)I+]Llibcore/io/IoTracker;missing_types
-HSPLjava/io/FileInputStream;->skip(J)J+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
+HSPLjava/io/FileInputStream;->skip(J)J+]Ldalvik/system/BlockGuard$Policy;missing_types
 HSPLjava/io/FileNotFoundException;-><init>(Ljava/lang/String;)V
 HSPLjava/io/FileOutputStream;-><init>(Ljava/io/File;)V
-HSPLjava/io/FileOutputStream;-><init>(Ljava/io/File;Z)V+]Ljava/io/File;missing_types]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLjava/io/FileOutputStream;-><init>(Ljava/io/File;Z)V+]Ljava/io/File;missing_types]Ldalvik/system/CloseGuard;missing_types
 HSPLjava/io/FileOutputStream;-><init>(Ljava/io/FileDescriptor;)V
 HSPLjava/io/FileOutputStream;-><init>(Ljava/io/FileDescriptor;Z)V
 HSPLjava/io/FileOutputStream;-><init>(Ljava/lang/String;)V
 HSPLjava/io/FileOutputStream;-><init>(Ljava/lang/String;Z)V
-HSPLjava/io/FileOutputStream;->close()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;]Ljava/nio/channels/FileChannel;Lsun/nio/ch/FileChannelImpl;
-HSPLjava/io/FileOutputStream;->finalize()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;]Ljava/io/FileOutputStream;missing_types
+HSPLjava/io/FileOutputStream;->close()V+]Ljava/nio/channels/FileChannel;Lsun/nio/ch/FileChannelImpl;]Ldalvik/system/CloseGuard;missing_types
+HSPLjava/io/FileOutputStream;->finalize()V+]Ldalvik/system/CloseGuard;missing_types]Ljava/io/FileOutputStream;missing_types
 HSPLjava/io/FileOutputStream;->getChannel()Ljava/nio/channels/FileChannel;
 HSPLjava/io/FileOutputStream;->getFD()Ljava/io/FileDescriptor;
-HSPLjava/io/FileOutputStream;->write(I)V+]Ljava/io/FileOutputStream;Ljava/io/FileOutputStream;
+HSPLjava/io/FileOutputStream;->write(I)V+]Ljava/io/FileOutputStream;Ljava/io/FileOutputStream;,Landroid/os/ParcelFileDescriptor$AutoCloseOutputStream;
 HSPLjava/io/FileOutputStream;->write([B)V+]Ljava/io/FileOutputStream;missing_types
 HSPLjava/io/FileOutputStream;->write([BII)V+]Llibcore/io/IoTracker;missing_types
 HSPLjava/io/FileReader;-><init>(Ljava/io/File;)V
@@ -1234,7 +1355,7 @@
 HSPLjava/io/FilterInputStream;->read([B)I+]Ljava/io/FilterInputStream;megamorphic_types
 HSPLjava/io/FilterInputStream;->read([BII)I+]Ljava/io/InputStream;megamorphic_types
 HSPLjava/io/FilterInputStream;->reset()V+]Ljava/io/InputStream;missing_types
-HSPLjava/io/FilterInputStream;->skip(J)J+]Ljava/io/InputStream;Ljava/io/BufferedInputStream;,Ljava/io/ByteArrayInputStream;
+HSPLjava/io/FilterInputStream;->skip(J)J+]Ljava/io/InputStream;Ljava/io/BufferedInputStream;,Ljava/io/ByteArrayInputStream;,Landroid/os/ParcelFileDescriptor$AutoCloseInputStream;,Ljavax/crypto/CipherInputStream;
 HSPLjava/io/FilterOutputStream;-><init>(Ljava/io/OutputStream;)V
 HSPLjava/io/FilterOutputStream;->close()V+]Ljava/io/OutputStream;megamorphic_types]Ljava/io/FilterOutputStream;missing_types]Ljava/lang/Throwable;Ljava/io/IOException;
 HSPLjava/io/FilterOutputStream;->flush()V+]Ljava/io/OutputStream;missing_types
@@ -1259,6 +1380,7 @@
 HSPLjava/io/InputStreamReader;->read()I+]Lsun/nio/cs/StreamDecoder;Lsun/nio/cs/StreamDecoder;
 HSPLjava/io/InputStreamReader;->read([CII)I+]Lsun/nio/cs/StreamDecoder;Lsun/nio/cs/StreamDecoder;
 HSPLjava/io/InputStreamReader;->ready()Z+]Lsun/nio/cs/StreamDecoder;Lsun/nio/cs/StreamDecoder;
+HSPLjava/io/InterruptedIOException;-><init>()V
 HSPLjava/io/InterruptedIOException;-><init>(Ljava/lang/String;)V
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;-><init>(Ljava/io/ObjectInputStream;Ljava/io/InputStream;)V
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;->close()V+]Ljava/io/ObjectInputStream$PeekInputStream;Ljava/io/ObjectInputStream$PeekInputStream;
@@ -1272,6 +1394,7 @@
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readBlockHeader(Z)I+]Ljava/io/ObjectInputStream$PeekInputStream;Ljava/io/ObjectInputStream$PeekInputStream;
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readBoolean()Z+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readByte()B+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;
+HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readFloat()F
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readFully([BIIZ)V+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readInt()I+]Ljava/io/ObjectInputStream$PeekInputStream;Ljava/io/ObjectInputStream$PeekInputStream;]Ljava/io/DataInputStream;Ljava/io/DataInputStream;
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readLong()J+]Ljava/io/ObjectInputStream$PeekInputStream;Ljava/io/ObjectInputStream$PeekInputStream;]Ljava/io/DataInputStream;Ljava/io/DataInputStream;
@@ -1305,9 +1428,9 @@
 HSPLjava/io/ObjectInputStream$HandleTable;->setObject(ILjava/lang/Object;)V
 HSPLjava/io/ObjectInputStream$HandleTable;->size()I
 HSPLjava/io/ObjectInputStream$PeekInputStream;-><init>(Ljava/io/InputStream;)V
-HSPLjava/io/ObjectInputStream$PeekInputStream;->close()V+]Ljava/io/InputStream;Ljava/io/ByteArrayInputStream;,Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection$1;,Ljava/io/FileInputStream;,Ljava/io/BufferedInputStream;
+HSPLjava/io/ObjectInputStream$PeekInputStream;->close()V+]Ljava/io/InputStream;missing_types
 HSPLjava/io/ObjectInputStream$PeekInputStream;->peek()I+]Ljava/io/InputStream;missing_types
-HSPLjava/io/ObjectInputStream$PeekInputStream;->read()I+]Ljava/io/InputStream;Ljava/io/BufferedInputStream;,Ljava/io/ByteArrayInputStream;,Ljavax/crypto/CipherInputStream;,Ljava/io/FileInputStream;
+HSPLjava/io/ObjectInputStream$PeekInputStream;->read()I+]Ljava/io/InputStream;missing_types
 HSPLjava/io/ObjectInputStream$PeekInputStream;->read([BII)I+]Ljava/io/InputStream;missing_types
 HSPLjava/io/ObjectInputStream$PeekInputStream;->readFully([BII)V+]Ljava/io/ObjectInputStream$PeekInputStream;Ljava/io/ObjectInputStream$PeekInputStream;
 HSPLjava/io/ObjectInputStream$ValidationList;-><init>()V
@@ -1323,7 +1446,7 @@
 HSPLjava/io/ObjectInputStream;->checkResolve(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable;
 HSPLjava/io/ObjectInputStream;->clear()V+]Ljava/io/ObjectInputStream$ValidationList;Ljava/io/ObjectInputStream$ValidationList;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable;
 HSPLjava/io/ObjectInputStream;->close()V+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;
-HSPLjava/io/ObjectInputStream;->defaultReadFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable;
+HSPLjava/io/ObjectInputStream;->defaultReadFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/io/ObjectInputStream;->defaultReadObject()V+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable;]Ljava/io/SerialCallbackContext;Ljava/io/SerialCallbackContext;
 HSPLjava/io/ObjectInputStream;->isCustomSubclass()Z+]Ljava/lang/Object;missing_types]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/io/ObjectInputStream;->latestUserDefinedLoader()Ljava/lang/ClassLoader;
@@ -1334,6 +1457,7 @@
 HSPLjava/io/ObjectInputStream;->readClassDescriptor()Ljava/io/ObjectStreamClass;+]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;
 HSPLjava/io/ObjectInputStream;->readEnum(Z)Ljava/lang/Enum;+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable;
 HSPLjava/io/ObjectInputStream;->readFields()Ljava/io/ObjectInputStream$GetField;+]Ljava/io/ObjectInputStream$GetFieldImpl;Ljava/io/ObjectInputStream$GetFieldImpl;]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;]Ljava/io/SerialCallbackContext;Ljava/io/SerialCallbackContext;
+HSPLjava/io/ObjectInputStream;->readFloat()F
 HSPLjava/io/ObjectInputStream;->readHandle(Z)Ljava/lang/Object;+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable;
 HSPLjava/io/ObjectInputStream;->readInt()I+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;
 HSPLjava/io/ObjectInputStream;->readLong()J+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;
@@ -1359,9 +1483,10 @@
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->setBlockDataMode(Z)Z+]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->warnIfClosed()V
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->write([BIIZ)V+]Ljava/io/OutputStream;missing_types]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
-HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeBlockHeader(I)V+]Ljava/io/OutputStream;Ljava/io/ByteArrayOutputStream;,Ljava/io/BufferedOutputStream;,Ljava/io/FileOutputStream;
+HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeBlockHeader(I)V+]Ljava/io/OutputStream;missing_types
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeByte(I)V+]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeBytes(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
+HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeFloat(F)V
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeInt(I)V+]Ljava/io/DataOutputStream;Ljava/io/DataOutputStream;
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeLong(J)V+]Ljava/io/DataOutputStream;Ljava/io/DataOutputStream;
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeShort(I)V+]Ljava/io/DataOutputStream;Ljava/io/DataOutputStream;
@@ -1379,9 +1504,7 @@
 HSPLjava/io/ObjectOutputStream$PutFieldImpl;-><init>(Ljava/io/ObjectOutputStream;Ljava/io/ObjectStreamClass;)V
 HSPLjava/io/ObjectOutputStream$PutFieldImpl;->getFieldOffset(Ljava/lang/String;Ljava/lang/Class;)I
 HSPLjava/io/ObjectOutputStream$PutFieldImpl;->put(Ljava/lang/String;D)V
-HSPLjava/io/ObjectOutputStream$PutFieldImpl;->put(Ljava/lang/String;I)V
 HSPLjava/io/ObjectOutputStream$PutFieldImpl;->put(Ljava/lang/String;J)V
-HSPLjava/io/ObjectOutputStream$PutFieldImpl;->put(Ljava/lang/String;Ljava/lang/Object;)V
 HSPLjava/io/ObjectOutputStream$PutFieldImpl;->put(Ljava/lang/String;Z)V
 HSPLjava/io/ObjectOutputStream$PutFieldImpl;->writeFields()V
 HSPLjava/io/ObjectOutputStream$ReplaceTable;-><init>(IF)V
@@ -1390,7 +1513,7 @@
 HSPLjava/io/ObjectOutputStream;-><init>(Ljava/io/OutputStream;)V+]Ljava/io/ObjectOutputStream;missing_types]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
 HSPLjava/io/ObjectOutputStream;->access$000(Ljava/io/ObjectOutputStream;)Ljava/io/ObjectOutputStream$BlockDataOutputStream;
 HSPLjava/io/ObjectOutputStream;->annotateClass(Ljava/lang/Class;)V
-HSPLjava/io/ObjectOutputStream;->close()V+]Ljava/io/ObjectOutputStream;Ljava/io/ObjectOutputStream;]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
+HSPLjava/io/ObjectOutputStream;->close()V+]Ljava/io/ObjectOutputStream;missing_types]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
 HSPLjava/io/ObjectOutputStream;->defaultWriteFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V+]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField;]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/io/ObjectOutputStream;->defaultWriteObject()V+]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;]Ljava/io/SerialCallbackContext;Ljava/io/SerialCallbackContext;
 HSPLjava/io/ObjectOutputStream;->flush()V+]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
@@ -1403,6 +1526,7 @@
 HSPLjava/io/ObjectOutputStream;->writeClassDescriptor(Ljava/io/ObjectStreamClass;)V+]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;
 HSPLjava/io/ObjectOutputStream;->writeEnum(Ljava/lang/Enum;Ljava/io/ObjectStreamClass;Z)V+]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;]Ljava/io/ObjectOutputStream$HandleTable;Ljava/io/ObjectOutputStream$HandleTable;]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
 HSPLjava/io/ObjectOutputStream;->writeFields()V+]Ljava/io/ObjectOutputStream$PutFieldImpl;Ljava/io/ObjectOutputStream$PutFieldImpl;]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
+HSPLjava/io/ObjectOutputStream;->writeFloat(F)V+]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
 HSPLjava/io/ObjectOutputStream;->writeHandle(I)V+]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
 HSPLjava/io/ObjectOutputStream;->writeInt(I)V+]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
 HSPLjava/io/ObjectOutputStream;->writeLong(J)V+]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream;
@@ -1447,7 +1571,7 @@
 HSPLjava/io/ObjectStreamClass$FieldReflector;->getPrimFieldValues(Ljava/lang/Object;[B)V+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
 HSPLjava/io/ObjectStreamClass$FieldReflector;->setObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V+]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/io/ObjectStreamClass$FieldReflector;->setPrimFieldValues(Ljava/lang/Object;[B)V+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
-HSPLjava/io/ObjectStreamClass$FieldReflectorKey;-><init>(Ljava/lang/Class;[Ljava/io/ObjectStreamField;Ljava/lang/ref/ReferenceQueue;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField;
+HSPLjava/io/ObjectStreamClass$FieldReflectorKey;-><init>(Ljava/lang/Class;[Ljava/io/ObjectStreamField;Ljava/lang/ref/ReferenceQueue;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField;
 HSPLjava/io/ObjectStreamClass$FieldReflectorKey;->equals(Ljava/lang/Object;)Z+]Ljava/io/ObjectStreamClass$FieldReflectorKey;Ljava/io/ObjectStreamClass$FieldReflectorKey;
 HSPLjava/io/ObjectStreamClass$FieldReflectorKey;->hashCode()I
 HSPLjava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Constructor;)V+]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;
@@ -1484,22 +1608,23 @@
 HSPLjava/io/ObjectStreamClass;->checkDeserialize()V+]Ljava/io/ObjectStreamClass$ExceptionInfo;Ljava/io/ObjectStreamClass$ExceptionInfo;
 HSPLjava/io/ObjectStreamClass;->checkSerialize()V
 HSPLjava/io/ObjectStreamClass;->classNamesEqual(Ljava/lang/String;Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String;
-HSPLjava/io/ObjectStreamClass;->computeDefaultSUID(Ljava/lang/Class;)J+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Ljava/lang/String;Ljava/lang/String;]Ljava/io/DataOutputStream;Ljava/io/DataOutputStream;]Ljava/lang/reflect/Member;Ljava/lang/reflect/Field;,Ljava/lang/reflect/Method;,Ljava/lang/reflect/Constructor;]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;]Ljava/io/ByteArrayOutputStream;Ljava/io/ByteArrayOutputStream;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLjava/io/ObjectStreamClass;->computeDefaultSUID(Ljava/lang/Class;)J+]Ldalvik/system/VMRuntime;missing_types]Ljava/lang/String;Ljava/lang/String;]Ljava/io/DataOutputStream;Ljava/io/DataOutputStream;]Ljava/lang/reflect/Member;Ljava/lang/reflect/Field;,Ljava/lang/reflect/Method;,Ljava/lang/reflect/Constructor;]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;]Ljava/io/ByteArrayOutputStream;Ljava/io/ByteArrayOutputStream;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/io/ObjectStreamClass;->computeFieldOffsets()V+]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField;
 HSPLjava/io/ObjectStreamClass;->forClass()Ljava/lang/Class;
 HSPLjava/io/ObjectStreamClass;->getClassDataLayout()[Ljava/io/ObjectStreamClass$ClassDataSlot;
 HSPLjava/io/ObjectStreamClass;->getClassDataLayout0()[Ljava/io/ObjectStreamClass$ClassDataSlot;+]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLjava/io/ObjectStreamClass;->getClassSignature(Ljava/lang/Class;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/io/ObjectStreamClass;->getDeclaredSUID(Ljava/lang/Class;)Ljava/lang/Long;
-HSPLjava/io/ObjectStreamClass;->getDeclaredSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField;
+HSPLjava/io/ObjectStreamClass;->getDeclaredSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField;+]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field;]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/util/Set;Ljava/util/HashSet;
 HSPLjava/io/ObjectStreamClass;->getDefaultSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField;+]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/io/ObjectStreamClass;->getField(Ljava/lang/String;Ljava/lang/Class;)Ljava/io/ObjectStreamField;+]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField;]Ljava/lang/Class;Ljava/lang/Class;
-HSPLjava/io/ObjectStreamClass;->getFields(Z)[Ljava/io/ObjectStreamField;
+HSPLjava/io/ObjectStreamClass;->getFields(Z)[Ljava/io/ObjectStreamField;+][Ljava/io/ObjectStreamField;[Ljava/io/ObjectStreamField;
 HSPLjava/io/ObjectStreamClass;->getInheritableMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method;+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;
 HSPLjava/io/ObjectStreamClass;->getMethodSignature([Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/io/ObjectStreamClass;->getName()Ljava/lang/String;
 HSPLjava/io/ObjectStreamClass;->getNumObjFields()I
 HSPLjava/io/ObjectStreamClass;->getObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V+]Ljava/io/ObjectStreamClass$FieldReflector;Ljava/io/ObjectStreamClass$FieldReflector;
+HSPLjava/io/ObjectStreamClass;->getPackageName(Ljava/lang/Class;)Ljava/lang/String;
 HSPLjava/io/ObjectStreamClass;->getPrimDataSize()I
 HSPLjava/io/ObjectStreamClass;->getPrimFieldValues(Ljava/lang/Object;[B)V+]Ljava/io/ObjectStreamClass$FieldReflector;Ljava/io/ObjectStreamClass$FieldReflector;
 HSPLjava/io/ObjectStreamClass;->getPrivateMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method;+]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;]Ljava/lang/Class;Ljava/lang/Class;
@@ -1527,6 +1652,7 @@
 HSPLjava/io/ObjectStreamClass;->lookup(Ljava/lang/Class;Z)Ljava/io/ObjectStreamClass;+]Ljava/lang/ref/Reference;Ljava/lang/ref/SoftReference;]Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentHashMap;]Ljava/io/ObjectStreamClass$EntryFuture;Ljava/io/ObjectStreamClass$EntryFuture;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/io/ObjectStreamClass;->matchFields([Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamClass;)[Ljava/io/ObjectStreamField;+]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField;
 HSPLjava/io/ObjectStreamClass;->newInstance()Ljava/lang/Object;+]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;
+HSPLjava/io/ObjectStreamClass;->packageEquals(Ljava/lang/Class;Ljava/lang/Class;)Z
 HSPLjava/io/ObjectStreamClass;->processQueue(Ljava/lang/ref/ReferenceQueue;Ljava/util/concurrent/ConcurrentMap;)V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue;
 HSPLjava/io/ObjectStreamClass;->readNonProxy(Ljava/io/ObjectInputStream;)V+]Ljava/io/ObjectInputStream;missing_types]Ljava/lang/Long;Ljava/lang/Long;
 HSPLjava/io/ObjectStreamClass;->requireInitialized()V
@@ -1564,13 +1690,13 @@
 HSPLjava/io/PrintStream;-><init>(Ljava/io/OutputStream;)V
 HSPLjava/io/PrintStream;-><init>(Ljava/io/OutputStream;Z)V
 HSPLjava/io/PrintStream;-><init>(ZLjava/io/OutputStream;)V
-HSPLjava/io/PrintStream;->close()V+]Ljava/io/OutputStream;Ljava/io/FileOutputStream;]Ljava/io/BufferedWriter;Ljava/io/BufferedWriter;
+HSPLjava/io/PrintStream;->close()V+]Ljava/io/OutputStream;Ljava/io/FileOutputStream;,Ljava/io/ByteArrayOutputStream;]Ljava/io/BufferedWriter;Ljava/io/BufferedWriter;
 HSPLjava/io/PrintStream;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
 HSPLjava/io/PrintWriter;-><init>(Ljava/io/OutputStream;)V
 HSPLjava/io/PrintWriter;-><init>(Ljava/io/OutputStream;Z)V
 HSPLjava/io/PrintWriter;-><init>(Ljava/io/Writer;)V
 HSPLjava/io/PrintWriter;-><init>(Ljava/io/Writer;Z)V
-HSPLjava/io/PrintWriter;->append(C)Ljava/io/PrintWriter;+]Ljava/io/PrintWriter;Lcom/android/internal/util/FastPrintWriter;,Ljava/io/PrintWriter;,Lcom/android/internal/util/LineBreakBufferedWriter;
+HSPLjava/io/PrintWriter;->append(C)Ljava/io/PrintWriter;+]Ljava/io/PrintWriter;missing_types
 HSPLjava/io/PrintWriter;->append(Ljava/lang/CharSequence;)Ljava/io/PrintWriter;+]Ljava/io/PrintWriter;missing_types]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder;
 HSPLjava/io/PrintWriter;->append(Ljava/lang/CharSequence;)Ljava/lang/Appendable;+]Ljava/io/PrintWriter;missing_types
 HSPLjava/io/PrintWriter;->close()V+]Ljava/io/Writer;Lcom/android/internal/util/FastPrintWriter;,Ljava/io/BufferedWriter;
@@ -1578,8 +1704,9 @@
 HSPLjava/io/PrintWriter;->flush()V+]Ljava/io/Writer;missing_types
 HSPLjava/io/PrintWriter;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;+]Ljava/util/Formatter;Ljava/util/Formatter;
 HSPLjava/io/PrintWriter;->newLine()V+]Ljava/io/Writer;missing_types
-HSPLjava/io/PrintWriter;->print(C)V+]Ljava/io/PrintWriter;Landroid/util/IndentingPrintWriter;,Lcom/android/internal/util/IndentingPrintWriter;,Ljava/io/PrintWriter;
+HSPLjava/io/PrintWriter;->print(C)V+]Ljava/io/PrintWriter;Ljava/io/PrintWriter;,Landroid/util/IndentingPrintWriter;,Lcom/android/internal/util/IndentingPrintWriter;
 HSPLjava/io/PrintWriter;->print(I)V+]Ljava/io/PrintWriter;missing_types
+HSPLjava/io/PrintWriter;->print(J)V+]Ljava/io/PrintWriter;missing_types
 HSPLjava/io/PrintWriter;->print(Ljava/lang/String;)V+]Ljava/io/PrintWriter;megamorphic_types
 HSPLjava/io/PrintWriter;->print(Z)V+]Ljava/io/PrintWriter;missing_types
 HSPLjava/io/PrintWriter;->printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;+]Ljava/io/PrintWriter;missing_types
@@ -1592,6 +1719,7 @@
 HSPLjava/io/PrintWriter;->write(Ljava/lang/String;II)V+]Ljava/io/Writer;missing_types
 HSPLjava/io/PrintWriter;->write([CII)V+]Ljava/io/Writer;missing_types
 HSPLjava/io/PushbackInputStream;-><init>(Ljava/io/InputStream;I)V
+HSPLjava/io/PushbackInputStream;->close()V
 HSPLjava/io/PushbackInputStream;->ensureOpen()V
 HSPLjava/io/PushbackInputStream;->markSupported()Z
 HSPLjava/io/PushbackInputStream;->read()I
@@ -1601,10 +1729,10 @@
 HSPLjava/io/PushbackReader;->ensureOpen()V
 HSPLjava/io/PushbackReader;->read()I
 HSPLjava/io/PushbackReader;->unread(I)V
-HSPLjava/io/RandomAccessFile;-><init>(Ljava/io/File;Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/File;missing_types]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLjava/io/RandomAccessFile;-><init>(Ljava/io/File;Ljava/lang/String;)V+]Ljava/io/File;missing_types]Ldalvik/system/CloseGuard;missing_types]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/io/RandomAccessFile;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-HSPLjava/io/RandomAccessFile;->close()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;]Ljava/nio/channels/FileChannel;Lsun/nio/ch/FileChannelImpl;
-HSPLjava/io/RandomAccessFile;->finalize()V+]Ljava/io/RandomAccessFile;missing_types]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLjava/io/RandomAccessFile;->close()V+]Ldalvik/system/CloseGuard;missing_types]Ljava/nio/channels/FileChannel;Lsun/nio/ch/FileChannelImpl;
+HSPLjava/io/RandomAccessFile;->finalize()V+]Ljava/io/RandomAccessFile;missing_types]Ldalvik/system/CloseGuard;missing_types
 HSPLjava/io/RandomAccessFile;->getChannel()Ljava/nio/channels/FileChannel;
 HSPLjava/io/RandomAccessFile;->getFD()Ljava/io/FileDescriptor;
 HSPLjava/io/RandomAccessFile;->getFilePointer()J+]Llibcore/io/Os;missing_types
@@ -1613,24 +1741,25 @@
 HSPLjava/io/RandomAccessFile;->read()I+]Ljava/io/RandomAccessFile;Ljava/io/RandomAccessFile;
 HSPLjava/io/RandomAccessFile;->read([B)I
 HSPLjava/io/RandomAccessFile;->read([BII)I
-HSPLjava/io/RandomAccessFile;->readBytes([BII)I+]Llibcore/io/IoTracker;Llibcore/io/IoTracker;
+HSPLjava/io/RandomAccessFile;->readBytes([BII)I+]Llibcore/io/IoTracker;missing_types
 HSPLjava/io/RandomAccessFile;->readFully([B)V+]Ljava/io/RandomAccessFile;Ljava/io/RandomAccessFile;
 HSPLjava/io/RandomAccessFile;->readFully([BII)V+]Ljava/io/RandomAccessFile;Ljava/io/RandomAccessFile;
 HSPLjava/io/RandomAccessFile;->readInt()I+]Ljava/io/RandomAccessFile;Ljava/io/RandomAccessFile;
-HSPLjava/io/RandomAccessFile;->seek(J)V+]Llibcore/io/Os;missing_types]Llibcore/io/IoTracker;Llibcore/io/IoTracker;
+HSPLjava/io/RandomAccessFile;->seek(J)V+]Llibcore/io/Os;missing_types]Llibcore/io/IoTracker;missing_types
 HSPLjava/io/RandomAccessFile;->setLength(J)V+]Llibcore/io/Os;missing_types]Ljava/io/RandomAccessFile;Ljava/io/RandomAccessFile;
 HSPLjava/io/RandomAccessFile;->write(I)V+]Ljava/io/RandomAccessFile;Ljava/io/RandomAccessFile;
 HSPLjava/io/RandomAccessFile;->write([B)V
 HSPLjava/io/RandomAccessFile;->write([BII)V
-HSPLjava/io/RandomAccessFile;->writeBytes([BII)V+]Llibcore/io/IoTracker;Llibcore/io/IoTracker;
+HSPLjava/io/RandomAccessFile;->writeBytes([BII)V+]Llibcore/io/IoTracker;missing_types
 HSPLjava/io/RandomAccessFile;->writeInt(I)V+]Ljava/io/RandomAccessFile;Ljava/io/RandomAccessFile;
 HSPLjava/io/RandomAccessFile;->writeUTF(Ljava/lang/String;)V
 HSPLjava/io/Reader;-><init>()V
 HSPLjava/io/Reader;-><init>(Ljava/lang/Object;)V
-HSPLjava/io/Reader;->read(Ljava/nio/CharBuffer;)I+]Ljava/io/Reader;Ljava/io/StringReader;,Ljava/io/InputStreamReader;,Lsun/nio/cs/StreamDecoder;]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;
+HSPLjava/io/Reader;->read(Ljava/nio/CharBuffer;)I+]Ljava/io/Reader;Ljava/io/InputStreamReader;,Ljava/io/StringReader;,Lsun/nio/cs/StreamDecoder;]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;
 HSPLjava/io/Reader;->read([C)I+]Ljava/io/Reader;missing_types
 HSPLjava/io/SequenceInputStream;-><init>(Ljava/io/InputStream;Ljava/io/InputStream;)V+]Ljava/util/Vector;Ljava/util/Vector;]Ljava/io/SequenceInputStream;Ljava/io/SequenceInputStream;
-HSPLjava/io/SequenceInputStream;->nextStream()V+]Ljava/io/InputStream;Ljava/io/ByteArrayInputStream;,Ljava/io/SequenceInputStream;,Ljava/io/BufferedInputStream;]Ljava/util/Enumeration;missing_types
+HSPLjava/io/SequenceInputStream;->close()V+]Ljava/io/SequenceInputStream;Ljava/io/SequenceInputStream;
+HSPLjava/io/SequenceInputStream;->nextStream()V+]Ljava/util/Enumeration;missing_types]Ljava/io/InputStream;Ljava/io/ByteArrayInputStream;,Ljava/io/SequenceInputStream;,Ljava/io/BufferedInputStream;
 HSPLjava/io/SequenceInputStream;->read()I+]Ljava/io/InputStream;Ljava/io/ByteArrayInputStream;,Ljava/util/zip/GZIPInputStream$1;,Ljava/io/BufferedInputStream;]Ljava/io/SequenceInputStream;Ljava/io/SequenceInputStream;
 HSPLjava/io/SequenceInputStream;->read([BII)I+]Ljava/io/InputStream;missing_types]Ljava/io/SequenceInputStream;Ljava/io/SequenceInputStream;
 HSPLjava/io/SerialCallbackContext;-><init>(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
@@ -1660,13 +1789,14 @@
 HSPLjava/io/UnixFileSystem;->canonicalize(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/io/UnixFileSystem;->checkAccess(Ljava/io/File;I)Z+]Ljava/io/File;missing_types]Llibcore/io/Os;missing_types
 HSPLjava/io/UnixFileSystem;->compare(Ljava/io/File;Ljava/io/File;)I+]Ljava/io/File;missing_types
-HSPLjava/io/UnixFileSystem;->createDirectory(Ljava/io/File;)Z+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;,Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;missing_types
-HSPLjava/io/UnixFileSystem;->createFileExclusively(Ljava/lang/String;)Z+]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;,Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
+HSPLjava/io/UnixFileSystem;->createDirectory(Ljava/io/File;)Z+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/BlockGuard$VmPolicy;missing_types]Ldalvik/system/BlockGuard$Policy;missing_types
+HSPLjava/io/UnixFileSystem;->createFileExclusively(Ljava/lang/String;)Z+]Ldalvik/system/BlockGuard$VmPolicy;missing_types]Ldalvik/system/BlockGuard$Policy;missing_types
 HSPLjava/io/UnixFileSystem;->delete(Ljava/io/File;)Z+]Ljava/io/ExpiringCache;Ljava/io/ExpiringCache;]Ljava/io/File;Ljava/io/File;]Llibcore/io/Os;missing_types
 HSPLjava/io/UnixFileSystem;->getBooleanAttributes(Ljava/io/File;)I+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/BlockGuard$VmPolicy;Landroid/os/StrictMode$5;,Ldalvik/system/BlockGuard$2;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
-HSPLjava/io/UnixFileSystem;->getLastModifiedTime(Ljava/io/File;)J+]Ljava/io/File;missing_types]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;,Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
+HSPLjava/io/UnixFileSystem;->getDefaultParent()Ljava/lang/String;
+HSPLjava/io/UnixFileSystem;->getLastModifiedTime(Ljava/io/File;)J+]Ljava/io/File;missing_types]Ldalvik/system/BlockGuard$VmPolicy;missing_types]Ldalvik/system/BlockGuard$Policy;missing_types
 HSPLjava/io/UnixFileSystem;->getLength(Ljava/io/File;)J+]Ljava/io/File;missing_types]Llibcore/io/Os;missing_types
-HSPLjava/io/UnixFileSystem;->getSpace(Ljava/io/File;I)J+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;,Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;missing_types
+HSPLjava/io/UnixFileSystem;->getSpace(Ljava/io/File;I)J+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/BlockGuard$VmPolicy;missing_types]Ldalvik/system/BlockGuard$Policy;missing_types
 HSPLjava/io/UnixFileSystem;->hashCode(Ljava/io/File;)I+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/File;missing_types
 HSPLjava/io/UnixFileSystem;->isAbsolute(Ljava/io/File;)Z+]Ljava/io/File;missing_types
 HSPLjava/io/UnixFileSystem;->list(Ljava/io/File;)[Ljava/lang/String;+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;,Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
@@ -1675,11 +1805,11 @@
 HSPLjava/io/UnixFileSystem;->rename(Ljava/io/File;Ljava/io/File;)Z+]Ljava/io/ExpiringCache;Ljava/io/ExpiringCache;]Ljava/io/File;missing_types]Llibcore/io/Os;missing_types
 HSPLjava/io/UnixFileSystem;->resolve(Ljava/io/File;)Ljava/lang/String;+]Ljava/io/File;missing_types]Ljava/io/UnixFileSystem;Ljava/io/UnixFileSystem;
 HSPLjava/io/UnixFileSystem;->resolve(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLjava/io/UnixFileSystem;->setLastModifiedTime(Ljava/io/File;J)Z+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;,Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;Landroid/os/StrictMode$AndroidBlockGuardPolicy;,Ldalvik/system/BlockGuard$1;
-HSPLjava/io/UnixFileSystem;->setPermission(Ljava/io/File;IZZ)Z+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;,Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;missing_types
+HSPLjava/io/UnixFileSystem;->setLastModifiedTime(Ljava/io/File;J)Z+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/BlockGuard$VmPolicy;missing_types]Ldalvik/system/BlockGuard$Policy;missing_types
+HSPLjava/io/UnixFileSystem;->setPermission(Ljava/io/File;IZZ)Z+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/BlockGuard$VmPolicy;missing_types]Ldalvik/system/BlockGuard$Policy;missing_types
 HSPLjava/io/Writer;-><init>()V
 HSPLjava/io/Writer;-><init>(Ljava/lang/Object;)V
-HSPLjava/io/Writer;->append(C)Ljava/io/Writer;+]Ljava/io/Writer;Ljava/io/BufferedWriter;,Ljava/io/OutputStreamWriter;,Ljava/io/FileWriter;
+HSPLjava/io/Writer;->append(C)Ljava/io/Writer;+]Ljava/io/Writer;Ljava/io/OutputStreamWriter;,Ljava/io/BufferedWriter;,Ljava/io/FileWriter;
 HSPLjava/io/Writer;->append(Ljava/lang/CharSequence;)Ljava/io/Writer;+]Ljava/io/Writer;Ljava/io/FileWriter;,Ljava/io/BufferedWriter;,Ljava/io/OutputStreamWriter;]Ljava/lang/CharSequence;Ljava/lang/StringBuilder;,Ljava/lang/String;
 HSPLjava/io/Writer;->write(Ljava/lang/String;)V+]Ljava/io/Writer;missing_types
 HSPLjava/lang/AbstractStringBuilder;-><init>(I)V
@@ -1689,7 +1819,7 @@
 HSPLjava/lang/AbstractStringBuilder;->append(I)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/lang/AbstractStringBuilder;->append(J)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;
-HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/CharSequence;)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/CharSequence;missing_types]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;,Ljava/lang/StringBuffer;
+HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/CharSequence;)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/CharSequence;megamorphic_types]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;,Ljava/lang/StringBuffer;
 HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/nio/HeapCharBuffer;,Landroid/icu/impl/FormattedStringBuilder;,Landroid/text/SpannableStringBuilder;
 HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/StringBuffer;)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;
@@ -1713,6 +1843,7 @@
 HSPLjava/lang/AbstractStringBuilder;->length()I
 HSPLjava/lang/AbstractStringBuilder;->newCapacity(I)I
 HSPLjava/lang/AbstractStringBuilder;->replace(IILjava/lang/String;)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/String;Ljava/lang/String;
+HSPLjava/lang/AbstractStringBuilder;->reverse()Ljava/lang/AbstractStringBuilder;
 HSPLjava/lang/AbstractStringBuilder;->setCharAt(IC)V
 HSPLjava/lang/AbstractStringBuilder;->setLength(I)V
 HSPLjava/lang/AbstractStringBuilder;->subSequence(II)Ljava/lang/CharSequence;+]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;
@@ -1768,6 +1899,7 @@
 HSPLjava/lang/Character;->forDigit(II)C
 HSPLjava/lang/Character;->getDirectionality(C)B
 HSPLjava/lang/Character;->getDirectionality(I)B
+HSPLjava/lang/Character;->getNumericValue(C)I
 HSPLjava/lang/Character;->getNumericValue(I)I
 HSPLjava/lang/Character;->getType(I)I
 HSPLjava/lang/Character;->hashCode()I
@@ -1777,6 +1909,7 @@
 HSPLjava/lang/Character;->isDigit(C)Z
 HSPLjava/lang/Character;->isDigit(I)Z
 HSPLjava/lang/Character;->isHighSurrogate(C)Z
+HSPLjava/lang/Character;->isISOControl(I)Z
 HSPLjava/lang/Character;->isJavaIdentifierPart(C)Z
 HSPLjava/lang/Character;->isJavaIdentifierPart(I)Z
 HSPLjava/lang/Character;->isLetter(C)Z
@@ -1787,6 +1920,7 @@
 HSPLjava/lang/Character;->isLowerCase(I)Z
 HSPLjava/lang/Character;->isSpaceChar(C)Z
 HSPLjava/lang/Character;->isSpaceChar(I)Z
+HSPLjava/lang/Character;->isSurrogate(C)Z
 HSPLjava/lang/Character;->isSurrogatePair(CC)Z
 HSPLjava/lang/Character;->isUpperCase(C)Z
 HSPLjava/lang/Character;->isUpperCase(I)Z
@@ -1815,7 +1949,7 @@
 HSPLjava/lang/Class;->forName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;+]Ljava/lang/ClassNotFoundException;Ljava/lang/ClassNotFoundException;
 HSPLjava/lang/Class;->getAccessFlags()I
 HSPLjava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;+]Ljava/lang/Class;Ljava/lang/Class;
-HSPLjava/lang/Class;->getCanonicalName()Ljava/lang/String;+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLjava/lang/Class;->getCanonicalName()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader;+]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->getComponentType()Ljava/lang/Class;
 HSPLjava/lang/Class;->getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
@@ -1827,19 +1961,19 @@
 HSPLjava/lang/Class;->getDeclaredMethods()[Ljava/lang/reflect/Method;+]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->getEnclosingConstructor()Ljava/lang/reflect/Constructor;
 HSPLjava/lang/Class;->getEnclosingMethod()Ljava/lang/reflect/Method;
-HSPLjava/lang/Class;->getEnumConstants()[Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class;
+HSPLjava/lang/Class;->getEnumConstants()[Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class;][Ljava/lang/Object;missing_types
 HSPLjava/lang/Class;->getEnumConstantsShared()[Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field;
 HSPLjava/lang/Class;->getFields()[Ljava/lang/reflect/Field;+]Ljava/util/List;Ljava/util/ArrayList;
-HSPLjava/lang/Class;->getGenericInterfaces()[Ljava/lang/reflect/Type;+]Llibcore/util/BasicLruCache;Llibcore/util/BasicLruCache;]Ljava/lang/Class;Ljava/lang/Class;]Llibcore/reflect/GenericSignatureParser;Llibcore/reflect/GenericSignatureParser;
-HSPLjava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type;+]Llibcore/reflect/GenericSignatureParser;Llibcore/reflect/GenericSignatureParser;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLjava/lang/Class;->getGenericInterfaces()[Ljava/lang/reflect/Type;+]Llibcore/util/BasicLruCache;missing_types]Ljava/lang/Class;Ljava/lang/Class;]Llibcore/reflect/GenericSignatureParser;missing_types][Ljava/lang/reflect/Type;[Ljava/lang/Class;,[Ljava/lang/reflect/Type;
+HSPLjava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type;+]Llibcore/reflect/GenericSignatureParser;missing_types]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->getInterfaces()[Ljava/lang/Class;+]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
 HSPLjava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;Z)Ljava/lang/reflect/Method;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->getMethods()[Ljava/lang/reflect/Method;+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLjava/lang/Class;->getModifiers()I+]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->getName()Ljava/lang/String;
-HSPLjava/lang/Class;->getPackage()Ljava/lang/Package;+]Ljava/lang/ClassLoader;Ldalvik/system/PathClassLoader;,Ljava/lang/BootClassLoader;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLjava/lang/Class;->getPackage()Ljava/lang/Package;+]Ljava/lang/ClassLoader;missing_types]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->getPackageName()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->getProtectionDomain()Ljava/security/ProtectionDomain;
 HSPLjava/lang/Class;->getPublicFieldsRecursive(Ljava/util/List;)V
@@ -1850,7 +1984,7 @@
 HSPLjava/lang/Class;->getSimpleName()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/lang/Class;->getSuperclass()Ljava/lang/Class;+]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->getTypeName()Ljava/lang/String;+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLjava/lang/Class;->getTypeParameters()[Ljava/lang/reflect/TypeVariable;+]Ljava/lang/Class;Ljava/lang/Class;]Llibcore/reflect/GenericSignatureParser;Llibcore/reflect/GenericSignatureParser;
+HSPLjava/lang/Class;->getTypeParameters()[Ljava/lang/reflect/TypeVariable;+]Ljava/lang/Class;Ljava/lang/Class;]Llibcore/reflect/GenericSignatureParser;missing_types
 HSPLjava/lang/Class;->isAnnotation()Z+]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->isAnnotationPresent(Ljava/lang/Class;)Z+]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->isArray()Z+]Ljava/lang/Class;Ljava/lang/Class;
@@ -1863,7 +1997,7 @@
 HSPLjava/lang/Class;->isMemberClass()Z+]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Class;->isPrimitive()Z
 HSPLjava/lang/Class;->isProxy()Z
-HSPLjava/lang/Class;->resolveName(Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/lang/Class;->resolveName(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/lang/Class;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/ClassCastException;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/ClassLoader;-><init>()V
@@ -1886,13 +2020,13 @@
 HSPLjava/lang/ClassNotFoundException;->getCause()Ljava/lang/Throwable;
 HSPLjava/lang/Daemons$Daemon;->interrupt(Ljava/lang/Thread;)V
 HSPLjava/lang/Daemons$Daemon;->isRunning()Z
-HSPLjava/lang/Daemons$Daemon;->run()V+]Ljava/lang/Daemons$Daemon;Ljava/lang/Daemons$FinalizerWatchdogDaemon;,Ljava/lang/Daemons$FinalizerDaemon;]Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;
+HSPLjava/lang/Daemons$Daemon;->run()V+]Ljava/lang/Daemons$Daemon;Ljava/lang/Daemons$ReferenceQueueDaemon;,Ljava/lang/Daemons$FinalizerDaemon;,Ljava/lang/Daemons$FinalizerWatchdogDaemon;,Ljava/lang/Daemons$HeapTaskDaemon;]Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;
 HSPLjava/lang/Daemons$Daemon;->startInternal()V+]Ljava/lang/Thread;Ljava/lang/Thread;
 HSPLjava/lang/Daemons$Daemon;->startPostZygoteFork()V+]Ljava/lang/Daemons$Daemon;Ljava/lang/Daemons$FinalizerWatchdogDaemon;
 HSPLjava/lang/Daemons$Daemon;->stop()V
 HSPLjava/lang/Daemons$FinalizerDaemon;->access$200()Ljava/lang/Daemons$FinalizerDaemon;
 HSPLjava/lang/Daemons$FinalizerDaemon;->access$900(Ljava/lang/Daemons$FinalizerDaemon;)Ljava/util/concurrent/atomic/AtomicInteger;
-HSPLjava/lang/Daemons$FinalizerDaemon;->doFinalize(Ljava/lang/ref/FinalizerReference;)V+]Ljava/lang/Object;missing_types]Ljava/lang/ref/FinalizerReference;Ljava/lang/ref/FinalizerReference;
+HSPLjava/lang/Daemons$FinalizerDaemon;->doFinalize(Ljava/lang/ref/FinalizerReference;)V+]Ljava/lang/Object;megamorphic_types]Ljava/lang/ref/FinalizerReference;Ljava/lang/ref/FinalizerReference;
 HSPLjava/lang/Daemons$FinalizerDaemon;->runInternal()V
 HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->access$300()Ljava/lang/Daemons$FinalizerWatchdogDaemon;
 HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->access$600(Ljava/lang/Daemons$FinalizerWatchdogDaemon;)V
@@ -1934,7 +2068,7 @@
 HSPLjava/lang/Enum$1;->create(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Enum$1;Ljava/lang/Enum$1;
 HSPLjava/lang/Enum;-><init>(Ljava/lang/String;I)V
 HSPLjava/lang/Enum;->access$000(Ljava/lang/Class;)[Ljava/lang/Object;
-HSPLjava/lang/Enum;->compareTo(Ljava/lang/Enum;)I+]Ljava/lang/Object;missing_types]Ljava/lang/Enum;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency$2;,Lcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency$1;
+HSPLjava/lang/Enum;->compareTo(Ljava/lang/Enum;)I+]Ljava/lang/Object;missing_types]Ljava/lang/Enum;missing_types
 HSPLjava/lang/Enum;->compareTo(Ljava/lang/Object;)I
 HSPLjava/lang/Enum;->enumValues(Ljava/lang/Class;)[Ljava/lang/Object;+]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Enum;->equals(Ljava/lang/Object;)Z
@@ -1949,6 +2083,7 @@
 HSPLjava/lang/Exception;-><init>()V
 HSPLjava/lang/Exception;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/Exception;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
+HSPLjava/lang/Exception;-><init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
 HSPLjava/lang/Exception;-><init>(Ljava/lang/Throwable;)V
 HSPLjava/lang/Float;-><init>(F)V
 HSPLjava/lang/Float;->compare(FF)I
@@ -2025,7 +2160,7 @@
 HSPLjava/lang/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer;
 HSPLjava/lang/Integer;->valueOf(Ljava/lang/String;I)Ljava/lang/Integer;
 HSPLjava/lang/InterruptedException;-><init>()V
-HSPLjava/lang/Iterable;->forEach(Ljava/util/function/Consumer;)V+]Ljava/lang/Iterable;Landroid/util/ArraySet;,Ljava/util/HashSet;,Landroid/util/MapCollections$ValuesCollection;,Ljava/util/EnumMap$Values;,Ljava/util/EnumMap$KeySet;]Ljava/util/Iterator;missing_types
+HSPLjava/lang/Iterable;->forEach(Ljava/util/function/Consumer;)V+]Ljava/lang/Iterable;missing_types]Ljava/util/Iterator;missing_types
 HSPLjava/lang/LinkageError;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/Long;-><init>(J)V
 HSPLjava/lang/Long;->bitCount(J)I
@@ -2047,7 +2182,6 @@
 HSPLjava/lang/Long;->intValue()I
 HSPLjava/lang/Long;->longValue()J
 HSPLjava/lang/Long;->lowestOneBit(J)J
-HSPLjava/lang/Long;->max(JJ)J
 HSPLjava/lang/Long;->numberOfLeadingZeros(J)I
 HSPLjava/lang/Long;->numberOfTrailingZeros(J)I
 HSPLjava/lang/Long;->parseLong(Ljava/lang/String;)J
@@ -2080,6 +2214,7 @@
 HSPLjava/lang/Math;->floorMod(II)I
 HSPLjava/lang/Math;->floorMod(JI)I
 HSPLjava/lang/Math;->floorMod(JJ)J
+HSPLjava/lang/Math;->getExponent(D)I
 HSPLjava/lang/Math;->getExponent(F)I
 HSPLjava/lang/Math;->max(DD)D
 HSPLjava/lang/Math;->max(FF)F
@@ -2134,7 +2269,7 @@
 HSPLjava/lang/ProcessBuilder;-><init>([Ljava/lang/String;)V+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLjava/lang/ProcessBuilder;->directory(Ljava/io/File;)Ljava/lang/ProcessBuilder;
 HSPLjava/lang/ProcessBuilder;->environment([Ljava/lang/String;)Ljava/lang/ProcessBuilder;
-HSPLjava/lang/ProcessBuilder;->start()Ljava/lang/Process;+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Exception;Ljava/io/IOException;
+HSPLjava/lang/ProcessBuilder;->start()Ljava/lang/Process;+]Ljava/util/List;Ljava/util/ArrayList;][Ljava/lang/String;[Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Exception;Ljava/io/IOException;
 HSPLjava/lang/ProcessEnvironment;->toEnvironmentBlock(Ljava/util/Map;[I)[B
 HSPLjava/lang/ProcessImpl;->start([Ljava/lang/String;Ljava/util/Map;Ljava/lang/String;[Ljava/lang/ProcessBuilder$Redirect;Z)Ljava/lang/Process;+]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/lang/ProcessImpl;->toCString(Ljava/lang/String;)[B+]Ljava/lang/String;Ljava/lang/String;
@@ -2145,11 +2280,12 @@
 HSPLjava/lang/Runtime;->availableProcessors()I+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;
 HSPLjava/lang/Runtime;->exec(Ljava/lang/String;)Ljava/lang/Process;+]Ljava/lang/Runtime;Ljava/lang/Runtime;
 HSPLjava/lang/Runtime;->exec(Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;+]Ljava/util/StringTokenizer;Ljava/util/StringTokenizer;]Ljava/lang/Runtime;Ljava/lang/Runtime;
+HSPLjava/lang/Runtime;->exec([Ljava/lang/String;)Ljava/lang/Process;
 HSPLjava/lang/Runtime;->exec([Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;+]Ljava/lang/ProcessBuilder;Ljava/lang/ProcessBuilder;
-HSPLjava/lang/Runtime;->gc()V+]Ldalvik/system/BlockGuard$Policy;Landroid/os/StrictMode$AndroidBlockGuardPolicy;,Ldalvik/system/BlockGuard$1;
+HSPLjava/lang/Runtime;->gc()V+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
 HSPLjava/lang/Runtime;->getLibPaths()[Ljava/lang/String;
 HSPLjava/lang/Runtime;->getRuntime()Ljava/lang/Runtime;
-HSPLjava/lang/Runtime;->load0(Ljava/lang/Class;Ljava/lang/String;)V+]Ljava/io/File;Ljava/io/File;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLjava/lang/Runtime;->load0(Ljava/lang/Class;Ljava/lang/String;)V+]Ljava/io/File;Ljava/io/File;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/lang/Runtime;->loadLibrary0(Ljava/lang/Class;Ljava/lang/String;)V
 HSPLjava/lang/Runtime;->loadLibrary0(Ljava/lang/ClassLoader;Ljava/lang/Class;Ljava/lang/String;)V+]Ljava/lang/Object;Ldalvik/system/PathClassLoader;]Ljava/lang/ClassLoader;Ldalvik/system/PathClassLoader;
 HSPLjava/lang/Runtime;->nativeLoad(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/String;
@@ -2185,7 +2321,7 @@
 HSPLjava/lang/String;->compareTo(Ljava/lang/Object;)I
 HSPLjava/lang/String;->compareToIgnoreCase(Ljava/lang/String;)I+]Ljava/util/Comparator;Ljava/lang/String$CaseInsensitiveComparator;
 HSPLjava/lang/String;->contains(Ljava/lang/CharSequence;)Z+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannableStringBuilder;,Landroid/text/SpannableString;
-HSPLjava/lang/String;->contentEquals(Ljava/lang/CharSequence;)Z+]Ljava/lang/CharSequence;Landroid/text/SpannableString;
+HSPLjava/lang/String;->contentEquals(Ljava/lang/CharSequence;)Z+]Ljava/lang/CharSequence;Landroid/text/SpannableString;,Landroid/text/SpannedString;,Landroid/text/SpannableStringBuilder;
 HSPLjava/lang/String;->copyValueOf([C)Ljava/lang/String;
 HSPLjava/lang/String;->endsWith(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/lang/String;->equals(Ljava/lang/Object;)Z
@@ -2206,7 +2342,7 @@
 HSPLjava/lang/String;->indexOf([CIILjava/lang/String;I)I+]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/lang/String;->indexOf([CII[CIII)I
 HSPLjava/lang/String;->isEmpty()Z
-HSPLjava/lang/String;->join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;+]Ljava/util/StringJoiner;Ljava/util/StringJoiner;]Ljava/lang/Iterable;missing_types]Ljava/util/Iterator;missing_types
+HSPLjava/lang/String;->join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;+]Ljava/util/StringJoiner;Ljava/util/StringJoiner;]Ljava/lang/Iterable;megamorphic_types]Ljava/util/Iterator;megamorphic_types
 HSPLjava/lang/String;->join(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String;+]Ljava/util/StringJoiner;Ljava/util/StringJoiner;
 HSPLjava/lang/String;->lastIndexOf(I)I+]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/lang/String;->lastIndexOf(II)I
@@ -2220,7 +2356,7 @@
 HSPLjava/lang/String;->regionMatches(ILjava/lang/String;II)Z
 HSPLjava/lang/String;->regionMatches(ZILjava/lang/String;II)Z
 HSPLjava/lang/String;->replace(CC)Ljava/lang/String;
-HSPLjava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLjava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder;
 HSPLjava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;
 HSPLjava/lang/String;->replaceFirst(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;
 HSPLjava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;
@@ -2255,6 +2391,7 @@
 HSPLjava/lang/StringBuffer;->append(Ljava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;
 HSPLjava/lang/StringBuffer;->append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuffer;
 HSPLjava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer;
+HSPLjava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;
 HSPLjava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
 HSPLjava/lang/StringBuffer;->append(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;
 HSPLjava/lang/StringBuffer;->append(Z)Ljava/lang/StringBuffer;
@@ -2267,7 +2404,7 @@
 HSPLjava/lang/StringBuffer;->toString()Ljava/lang/String;
 HSPLjava/lang/StringBuilder;-><init>()V
 HSPLjava/lang/StringBuilder;-><init>(I)V
-HSPLjava/lang/StringBuilder;-><init>(Ljava/lang/CharSequence;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/CharSequence;Ljava/lang/StringBuilder;,Landroid/text/SpannableStringBuilder;,Ljava/lang/String;,Landroid/text/SpannableString;
+HSPLjava/lang/StringBuilder;-><init>(Ljava/lang/CharSequence;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/CharSequence;missing_types
 HSPLjava/lang/StringBuilder;-><init>(Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/lang/StringBuilder;->append(C)Ljava/lang/Appendable;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
@@ -2301,6 +2438,7 @@
 HSPLjava/lang/StringBuilder;->lastIndexOf(Ljava/lang/String;I)I
 HSPLjava/lang/StringBuilder;->length()I
 HSPLjava/lang/StringBuilder;->replace(IILjava/lang/String;)Ljava/lang/StringBuilder;
+HSPLjava/lang/StringBuilder;->reverse()Ljava/lang/StringBuilder;
 HSPLjava/lang/StringBuilder;->setCharAt(IC)V
 HSPLjava/lang/StringBuilder;->setLength(I)V
 HSPLjava/lang/StringBuilder;->subSequence(II)Ljava/lang/CharSequence;
@@ -2317,7 +2455,7 @@
 HSPLjava/lang/StringFactory;->newStringFromBytes([BLjava/nio/charset/Charset;)Ljava/lang/String;
 HSPLjava/lang/StringFactory;->newStringFromChars([C)Ljava/lang/String;
 HSPLjava/lang/StringFactory;->newStringFromChars([CII)Ljava/lang/String;
-HSPLjava/lang/System$PropertiesWithNonOverrideableDefaults;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/lang/System$PropertiesWithNonOverrideableDefaults;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Properties;Ljava/util/Properties;
 HSPLjava/lang/System$PropertiesWithNonOverrideableDefaults;->remove(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Properties;Ljava/util/Properties;
 HSPLjava/lang/System;->arraycopy([BI[BII)V
 HSPLjava/lang/System;->arraycopy([CI[CII)V
@@ -2328,13 +2466,13 @@
 HSPLjava/lang/System;->checkKey(Ljava/lang/String;)V
 HSPLjava/lang/System;->clearProperty(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/lang/System;->gc()V+]Ljava/lang/Runtime;Ljava/lang/Runtime;
+HSPLjava/lang/System;->getProperties()Ljava/util/Properties;
 HSPLjava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Properties;Ljava/lang/System$PropertiesWithNonOverrideableDefaults;
-HSPLjava/lang/System;->getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/lang/System;->getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Properties;Ljava/lang/System$PropertiesWithNonOverrideableDefaults;
 HSPLjava/lang/System;->getSecurityManager()Ljava/lang/SecurityManager;
 HSPLjava/lang/System;->getenv(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/lang/System;->identityHashCode(Ljava/lang/Object;)I
 HSPLjava/lang/System;->lineSeparator()Ljava/lang/String;
-HSPLjava/lang/System;->load(Ljava/lang/String;)V
 HSPLjava/lang/System;->loadLibrary(Ljava/lang/String;)V
 HSPLjava/lang/System;->logE(Ljava/lang/String;)V
 HSPLjava/lang/System;->logW(Ljava/lang/String;)V
@@ -2342,7 +2480,7 @@
 HSPLjava/lang/System;->setErr(Ljava/io/PrintStream;)V
 HSPLjava/lang/System;->setOut(Ljava/io/PrintStream;)V
 HSPLjava/lang/System;->setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLjava/lang/Thread$State;->values()[Ljava/lang/Thread$State;
+HSPLjava/lang/Thread$State;->values()[Ljava/lang/Thread$State;+][Ljava/lang/Thread$State;[Ljava/lang/Thread$State;
 HSPLjava/lang/Thread;-><init>()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/lang/Thread;-><init>(Ljava/lang/Runnable;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/lang/Thread;-><init>(Ljava/lang/Runnable;Ljava/lang/String;)V
@@ -2369,7 +2507,7 @@
 HSPLjava/lang/Thread;->interrupt()V+]Ljava/lang/Thread;missing_types
 HSPLjava/lang/Thread;->isAlive()Z
 HSPLjava/lang/Thread;->isDaemon()Z
-HSPLjava/lang/Thread;->join()V
+HSPLjava/lang/Thread;->join()V+]Ljava/lang/Thread;missing_types
 HSPLjava/lang/Thread;->join(J)V+]Ljava/lang/Thread;missing_types]Ljava/lang/Object;Ljava/lang/Object;
 HSPLjava/lang/Thread;->nextThreadID()J
 HSPLjava/lang/Thread;->nextThreadNum()I
@@ -2441,7 +2579,7 @@
 HSPLjava/lang/Throwable$PrintStreamOrWriter;-><init>(Ljava/lang/Throwable$1;)V
 HSPLjava/lang/Throwable$WrappedPrintStream;-><init>(Ljava/io/PrintStream;)V
 HSPLjava/lang/Throwable$WrappedPrintStream;->lock()Ljava/lang/Object;
-HSPLjava/lang/Throwable$WrappedPrintStream;->println(Ljava/lang/Object;)V+]Ljava/io/PrintStream;Lcom/android/internal/os/AndroidPrintStream;,Ljava/io/PrintStream;
+HSPLjava/lang/Throwable$WrappedPrintStream;->println(Ljava/lang/Object;)V+]Ljava/io/PrintStream;missing_types
 HSPLjava/lang/Throwable$WrappedPrintWriter;-><init>(Ljava/io/PrintWriter;)V
 HSPLjava/lang/Throwable$WrappedPrintWriter;->lock()Ljava/lang/Object;
 HSPLjava/lang/Throwable$WrappedPrintWriter;->println(Ljava/lang/Object;)V+]Ljava/io/PrintWriter;missing_types
@@ -2456,16 +2594,16 @@
 HSPLjava/lang/Throwable;->getLocalizedMessage()Ljava/lang/String;+]Ljava/lang/Throwable;megamorphic_types
 HSPLjava/lang/Throwable;->getMessage()Ljava/lang/String;
 HSPLjava/lang/Throwable;->getOurStackTrace()[Ljava/lang/StackTraceElement;
-HSPLjava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement;
+HSPLjava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement;+][Ljava/lang/StackTraceElement;[Ljava/lang/StackTraceElement;
 HSPLjava/lang/Throwable;->getSuppressed()[Ljava/lang/Throwable;+]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;
 HSPLjava/lang/Throwable;->initCause(Ljava/lang/Throwable;)Ljava/lang/Throwable;
 HSPLjava/lang/Throwable;->printEnclosedStackTrace(Ljava/lang/Throwable$PrintStreamOrWriter;[Ljava/lang/StackTraceElement;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Throwable$PrintStreamOrWriter;Ljava/lang/Throwable$WrappedPrintWriter;,Ljava/lang/Throwable$WrappedPrintStream;]Ljava/lang/Throwable;megamorphic_types]Ljava/lang/StackTraceElement;Ljava/lang/StackTraceElement;]Ljava/util/Set;Ljava/util/Collections$SetFromMap;
-HSPLjava/lang/Throwable;->printStackTrace()V+]Ljava/lang/Throwable;Ljava/lang/IllegalArgumentException;,Ljava/lang/RuntimeException;,Ljava/io/FileNotFoundException;
+HSPLjava/lang/Throwable;->printStackTrace()V+]Ljava/lang/Throwable;missing_types
 HSPLjava/lang/Throwable;->printStackTrace(Ljava/io/PrintStream;)V
 HSPLjava/lang/Throwable;->printStackTrace(Ljava/io/PrintWriter;)V
 HSPLjava/lang/Throwable;->printStackTrace(Ljava/lang/Throwable$PrintStreamOrWriter;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Throwable$PrintStreamOrWriter;Ljava/lang/Throwable$WrappedPrintWriter;,Ljava/lang/Throwable$WrappedPrintStream;]Ljava/lang/Throwable;megamorphic_types]Ljava/util/Set;Ljava/util/Collections$SetFromMap;
 HSPLjava/lang/Throwable;->readObject(Ljava/io/ObjectInputStream;)V+]Ljava/io/ObjectInputStream;Landroid/os/Parcel$2;]Ljava/util/List;Ljava/util/Collections$EmptyList;
-HSPLjava/lang/Throwable;->setStackTrace([Ljava/lang/StackTraceElement;)V
+HSPLjava/lang/Throwable;->setStackTrace([Ljava/lang/StackTraceElement;)V+][Ljava/lang/StackTraceElement;[Ljava/lang/StackTraceElement;
 HSPLjava/lang/Throwable;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;megamorphic_types]Ljava/lang/Throwable;megamorphic_types]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/Throwable;->writeObject(Ljava/io/ObjectOutputStream;)V+]Ljava/io/ObjectOutputStream;Ljava/io/ObjectOutputStream;
 HSPLjava/lang/UNIXProcess$2;-><init>(Ljava/lang/UNIXProcess;[I)V
@@ -2487,6 +2625,7 @@
 HSPLjava/lang/UNIXProcess;->initStreams([I)V+]Ljava/util/concurrent/Executor;Ljava/util/concurrent/ThreadPoolExecutor;
 HSPLjava/lang/UNIXProcess;->newFileDescriptor(I)Ljava/io/FileDescriptor;
 HSPLjava/lang/UNIXProcess;->processExited(I)V+]Ljava/lang/UNIXProcess$ProcessPipeOutputStream;Ljava/lang/UNIXProcess$ProcessPipeOutputStream;]Ljava/lang/Object;Ljava/lang/UNIXProcess;]Ljava/lang/UNIXProcess$ProcessPipeInputStream;Ljava/lang/UNIXProcess$ProcessPipeInputStream;
+HSPLjava/lang/UNIXProcess;->waitFor()I
 HSPLjava/lang/UnsatisfiedLinkError;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/UnsupportedOperationException;-><init>()V
 HSPLjava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
@@ -2547,7 +2686,6 @@
 HSPLjava/lang/ref/FinalizerReference;->get()Ljava/lang/Object;
 HSPLjava/lang/ref/FinalizerReference;->remove(Ljava/lang/ref/FinalizerReference;)V
 HSPLjava/lang/ref/PhantomReference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-HSPLjava/lang/ref/Reference$SinkHolder;->access$000()I
 HSPLjava/lang/ref/Reference;-><init>(Ljava/lang/Object;)V
 HSPLjava/lang/ref/Reference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
 HSPLjava/lang/ref/Reference;->clear()V+]Ljava/lang/ref/Reference;missing_types
@@ -2568,7 +2706,7 @@
 HSPLjava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;)V
 HSPLjava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
 HSPLjava/lang/reflect/AccessibleObject;-><init>()V
-HSPLjava/lang/reflect/AccessibleObject;->getAnnotations()[Ljava/lang/annotation/Annotation;+]Ljava/lang/reflect/AccessibleObject;Ljava/lang/reflect/Field;,Ljava/lang/reflect/Method;
+HSPLjava/lang/reflect/AccessibleObject;->getAnnotations()[Ljava/lang/annotation/Annotation;+]Ljava/lang/reflect/AccessibleObject;Ljava/lang/reflect/Method;,Ljava/lang/reflect/Field;,Ljava/lang/reflect/Constructor;
 HSPLjava/lang/reflect/AccessibleObject;->isAccessible()Z
 HSPLjava/lang/reflect/AccessibleObject;->setAccessible(Z)V
 HSPLjava/lang/reflect/AccessibleObject;->setAccessible0(Ljava/lang/reflect/AccessibleObject;Z)V+]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;
@@ -2577,7 +2715,7 @@
 HSPLjava/lang/reflect/Array;->newArray(Ljava/lang/Class;I)Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
 HSPLjava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
-HSPLjava/lang/reflect/Array;->set(Ljava/lang/Object;ILjava/lang/Object;)V+]Ljava/lang/Object;missing_types]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Byte;Ljava/lang/Byte;]Ljava/lang/Short;Ljava/lang/Short;]Ljava/lang/Float;Ljava/lang/Float;]Ljava/lang/Double;Ljava/lang/Double;]Ljava/lang/Long;Ljava/lang/Long;
+HSPLjava/lang/reflect/Array;->set(Ljava/lang/Object;ILjava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Object;missing_types]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Byte;Ljava/lang/Byte;]Ljava/lang/Double;Ljava/lang/Double;]Ljava/lang/Float;Ljava/lang/Float;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Short;Ljava/lang/Short;
 HSPLjava/lang/reflect/Array;->setInt(Ljava/lang/Object;II)V
 HSPLjava/lang/reflect/Constructor;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V
 HSPLjava/lang/reflect/Constructor;->getDeclaringClass()Ljava/lang/Class;
@@ -2597,7 +2735,7 @@
 HSPLjava/lang/reflect/Executable;->getDeclaredAnnotations()[Ljava/lang/annotation/Annotation;
 HSPLjava/lang/reflect/Executable;->getDeclaringClassInternal()Ljava/lang/Class;
 HSPLjava/lang/reflect/Executable;->getGenericParameterTypes()[Ljava/lang/reflect/Type;+]Ljava/lang/reflect/Executable;Ljava/lang/reflect/Method;,Ljava/lang/reflect/Constructor;
-HSPLjava/lang/reflect/Executable;->getMethodOrConstructorGenericInfoInternal()Ljava/lang/reflect/Executable$GenericInfo;+]Ljava/lang/reflect/Executable;Ljava/lang/reflect/Method;,Ljava/lang/reflect/Constructor;]Ljava/lang/Class;Ljava/lang/Class;]Llibcore/reflect/GenericSignatureParser;Llibcore/reflect/GenericSignatureParser;
+HSPLjava/lang/reflect/Executable;->getMethodOrConstructorGenericInfoInternal()Ljava/lang/reflect/Executable$GenericInfo;+]Ljava/lang/reflect/Executable;Ljava/lang/reflect/Method;,Ljava/lang/reflect/Constructor;]Ljava/lang/Class;Ljava/lang/Class;]Llibcore/reflect/GenericSignatureParser;missing_types
 HSPLjava/lang/reflect/Executable;->getModifiersInternal()I
 HSPLjava/lang/reflect/Executable;->getParameterAnnotationsInternal()[[Ljava/lang/annotation/Annotation;+]Ljava/lang/reflect/Executable;Ljava/lang/reflect/Method;,Ljava/lang/reflect/Constructor;
 HSPLjava/lang/reflect/Executable;->getSignatureAttribute()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
@@ -2605,6 +2743,9 @@
 HSPLjava/lang/reflect/Executable;->isDefaultMethodInternal()Z
 HSPLjava/lang/reflect/Executable;->isSynthetic()Z
 HSPLjava/lang/reflect/Executable;->isVarArgs()Z
+HSPLjava/lang/reflect/Executable;->printModifiersIfNonzero(Ljava/lang/StringBuilder;IZ)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/reflect/Executable;Ljava/lang/reflect/Method;
+HSPLjava/lang/reflect/Executable;->separateWithCommas([Ljava/lang/Class;Ljava/lang/StringBuilder;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLjava/lang/reflect/Executable;->sharedToString(IZ[Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/reflect/Executable;Ljava/lang/reflect/Method;
 HSPLjava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
 HSPLjava/lang/reflect/Field;->getDeclaringClass()Ljava/lang/Class;
 HSPLjava/lang/reflect/Field;->getGenericType()Ljava/lang/reflect/Type;+]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field;]Ljava/lang/Class;Ljava/lang/Class;]Llibcore/reflect/GenericSignatureParser;missing_types
@@ -2637,6 +2778,8 @@
 HSPLjava/lang/reflect/Method;->isDefault()Z
 HSPLjava/lang/reflect/Method;->isSynthetic()Z
 HSPLjava/lang/reflect/Method;->isVarArgs()Z
+HSPLjava/lang/reflect/Method;->specificToStringHeader(Ljava/lang/StringBuilder;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLjava/lang/reflect/Method;->toString()Ljava/lang/String;+]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;
 HSPLjava/lang/reflect/Modifier;->isAbstract(I)Z
 HSPLjava/lang/reflect/Modifier;->isFinal(I)Z
 HSPLjava/lang/reflect/Modifier;->isInterface(I)Z
@@ -2647,6 +2790,8 @@
 HSPLjava/lang/reflect/Modifier;->isSynthetic(I)Z
 HSPLjava/lang/reflect/Modifier;->isTransient(I)Z
 HSPLjava/lang/reflect/Modifier;->isVolatile(I)Z
+HSPLjava/lang/reflect/Modifier;->methodModifiers()I
+HSPLjava/lang/reflect/Modifier;->toString(I)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/lang/reflect/Proxy$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I+]Ljava/lang/reflect/Proxy$1;Ljava/lang/reflect/Proxy$1;
 HSPLjava/lang/reflect/Proxy$1;->compare(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)I+]Ljava/util/Comparator;Ljava/lang/reflect/Method$1;]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/lang/reflect/Proxy$Key1;-><init>(Ljava/lang/Class;)V+]Ljava/lang/Object;Ljava/lang/Class;
@@ -2655,7 +2800,7 @@
 HSPLjava/lang/reflect/Proxy$KeyFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Object;
 HSPLjava/lang/reflect/Proxy$KeyFactory;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/reflect/Proxy$KeyFactory;Ljava/lang/reflect/Proxy$KeyFactory;
 HSPLjava/lang/reflect/Proxy$ProxyClassFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;]Ljava/util/Map;Ljava/util/IdentityHashMap;]Ljava/lang/Class;Ljava/lang/Class;
-HSPLjava/lang/reflect/Proxy$ProxyClassFactory;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/lang/reflect/Proxy$ProxyClassFactory;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/reflect/Proxy$ProxyClassFactory;Ljava/lang/reflect/Proxy$ProxyClassFactory;
 HSPLjava/lang/reflect/Proxy;->access$300([Ljava/lang/Class;)Ljava/util/List;
 HSPLjava/lang/reflect/Proxy;->access$400()Ljava/util/Comparator;
 HSPLjava/lang/reflect/Proxy;->access$500(Ljava/util/List;)V
@@ -2668,7 +2813,7 @@
 HSPLjava/lang/reflect/Proxy;->intersectExceptions([Ljava/lang/Class;[Ljava/lang/Class;)[Ljava/lang/Class;
 HSPLjava/lang/reflect/Proxy;->invoke(Ljava/lang/reflect/Proxy;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/reflect/InvocationHandler;missing_types
 HSPLjava/lang/reflect/Proxy;->isProxyClass(Ljava/lang/Class;)Z+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/WeakCache;Ljava/lang/reflect/WeakCache;
-HSPLjava/lang/reflect/Proxy;->newProxyInstance(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;
+HSPLjava/lang/reflect/Proxy;->newProxyInstance(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;+][Ljava/lang/Class;[Ljava/lang/Class;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;
 HSPLjava/lang/reflect/Proxy;->validateReturnTypes(Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
 HSPLjava/lang/reflect/WeakCache$CacheKey;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
 HSPLjava/lang/reflect/WeakCache$CacheKey;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Ljava/lang/reflect/WeakCache$CacheKey;]Ljava/lang/reflect/WeakCache$CacheKey;Ljava/lang/reflect/WeakCache$CacheKey;
@@ -2683,6 +2828,7 @@
 HSPLjava/lang/reflect/WeakCache;->expungeStaleEntries()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue;
 HSPLjava/lang/reflect/WeakCache;->get(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/function/BiFunction;Ljava/lang/reflect/Proxy$KeyFactory;]Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentHashMap;]Ljava/util/function/Supplier;Ljava/lang/reflect/WeakCache$CacheValue;,Ljava/lang/reflect/WeakCache$Factory;
 HSPLjava/math/BigDecimal;-><init>(I)V
+HSPLjava/math/BigDecimal;-><init>(J)V
 HSPLjava/math/BigDecimal;-><init>(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/math/BigDecimal;-><init>(Ljava/math/BigInteger;JII)V
 HSPLjava/math/BigDecimal;-><init>([CII)V
@@ -2716,7 +2862,7 @@
 HSPLjava/math/BigDecimal;->stripTrailingZeros()Ljava/math/BigDecimal;+]Ljava/math/BigInteger;Ljava/math/BigInteger;
 HSPLjava/math/BigDecimal;->subtract(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;+]Ljava/math/BigInteger;Ljava/math/BigInteger;
 HSPLjava/math/BigDecimal;->toBigIntegerExact()Ljava/math/BigInteger;+]Ljava/math/BigDecimal;Ljava/math/BigDecimal;
-HSPLjava/math/BigDecimal;->toPlainString()Ljava/lang/String;+]Ljava/math/BigDecimal;Ljava/math/BigDecimal;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/math/BigInteger;Ljava/math/BigInteger;
+HSPLjava/math/BigDecimal;->toPlainString()Ljava/lang/String;+]Ljava/math/BigDecimal;Ljava/math/BigDecimal;]Ljava/math/BigInteger;Ljava/math/BigInteger;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/math/BigDecimal;->valueOf(J)Ljava/math/BigDecimal;
 HSPLjava/math/BigDecimal;->valueOf(JI)Ljava/math/BigDecimal;
 HSPLjava/math/BigDecimal;->zeroValueOf(I)Ljava/math/BigDecimal;
@@ -2732,6 +2878,7 @@
 HSPLjava/math/BigInteger;-><init>([II)V
 HSPLjava/math/BigInteger;->abs()Ljava/math/BigInteger;+]Ljava/math/BigInteger;Ljava/math/BigInteger;
 HSPLjava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;+]Ljava/math/BigInteger;Ljava/math/BigInteger;
+HSPLjava/math/BigInteger;->add([I[I)[I
 HSPLjava/math/BigInteger;->bigEndInts2NewBN([IZ)J
 HSPLjava/math/BigInteger;->bitLength()I
 HSPLjava/math/BigInteger;->bitLengthForInt(I)I
@@ -2759,6 +2906,8 @@
 HSPLjava/math/BigInteger;->reverse([I)[I
 HSPLjava/math/BigInteger;->shiftLeft(I)Ljava/math/BigInteger;
 HSPLjava/math/BigInteger;->shiftLeft([II)[I
+HSPLjava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger;
+HSPLjava/math/BigInteger;->shiftRightImpl(I)Ljava/math/BigInteger;
 HSPLjava/math/BigInteger;->signInt()I
 HSPLjava/math/BigInteger;->signum()I
 HSPLjava/math/BigInteger;->smallToString(I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/math/BigInteger;Ljava/math/BigInteger;]Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;
@@ -2799,24 +2948,23 @@
 HSPLjava/math/MutableBigInteger;->toBigInteger(I)Ljava/math/BigInteger;
 HSPLjava/math/MutableBigInteger;->unsignedLongCompare(JJ)Z
 HSPLjava/math/RoundingMode;->values()[Ljava/math/RoundingMode;
-HSPLjava/net/AbstractPlainDatagramSocketImpl;-><init>()V
 HSPLjava/net/AbstractPlainDatagramSocketImpl;->bind(ILjava/net/InetAddress;)V+]Ljava/net/AbstractPlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;
-HSPLjava/net/AbstractPlainDatagramSocketImpl;->close()V+]Ljava/net/AbstractPlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
-HSPLjava/net/AbstractPlainDatagramSocketImpl;->create()V+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;]Ljava/net/AbstractPlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
-HSPLjava/net/AbstractPlainDatagramSocketImpl;->finalize()V+]Ljava/net/AbstractPlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLjava/net/AbstractPlainDatagramSocketImpl;->close()V+]Ljava/net/AbstractPlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;]Ldalvik/system/CloseGuard;missing_types
+HSPLjava/net/AbstractPlainDatagramSocketImpl;->create()V+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;]Ljava/net/AbstractPlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;]Ldalvik/system/CloseGuard;missing_types
+HSPLjava/net/AbstractPlainDatagramSocketImpl;->finalize()V+]Ljava/net/AbstractPlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;]Ldalvik/system/CloseGuard;missing_types
 HSPLjava/net/AbstractPlainDatagramSocketImpl;->isClosed()Z
 HSPLjava/net/AbstractPlainDatagramSocketImpl;->receive(Ljava/net/DatagramPacket;)V+]Ljava/net/AbstractPlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;
-HSPLjava/net/AbstractPlainDatagramSocketImpl;->setOption(ILjava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/net/NetworkInterface;Ljava/net/NetworkInterface;]Ljava/net/AbstractPlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;
+HSPLjava/net/AbstractPlainDatagramSocketImpl;->setOption(ILjava/lang/Object;)V+]Ljava/net/NetworkInterface;Ljava/net/NetworkInterface;]Ljava/net/AbstractPlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;]Ljava/lang/Integer;Ljava/lang/Integer;
 HSPLjava/net/AbstractPlainSocketImpl;-><init>()V
 HSPLjava/net/AbstractPlainSocketImpl;->accept(Ljava/net/SocketImpl;)V+]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;
 HSPLjava/net/AbstractPlainSocketImpl;->acquireFD()Ljava/io/FileDescriptor;
-HSPLjava/net/AbstractPlainSocketImpl;->bind(Ljava/net/InetAddress;I)V
-HSPLjava/net/AbstractPlainSocketImpl;->close()V+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
-HSPLjava/net/AbstractPlainSocketImpl;->connect(Ljava/net/SocketAddress;I)V+]Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;
-HSPLjava/net/AbstractPlainSocketImpl;->connectToAddress(Ljava/net/InetAddress;II)V+]Ljava/net/InetAddress;Ljava/net/Inet6Address;,Ljava/net/Inet4Address;]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;
-HSPLjava/net/AbstractPlainSocketImpl;->create(Z)V+]Ljava/net/Socket;missing_types]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;]Ljava/net/ServerSocket;Ljava/net/ServerSocket;
-HSPLjava/net/AbstractPlainSocketImpl;->doConnect(Ljava/net/InetAddress;II)V+]Ljava/net/Socket;missing_types]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
-HSPLjava/net/AbstractPlainSocketImpl;->finalize()V+]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLjava/net/AbstractPlainSocketImpl;->bind(Ljava/net/InetAddress;I)V+]Ljava/net/ServerSocket;Ljava/net/ServerSocket;]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;
+HSPLjava/net/AbstractPlainSocketImpl;->close()V+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;]Ldalvik/system/CloseGuard;missing_types
+HSPLjava/net/AbstractPlainSocketImpl;->connect(Ljava/net/SocketAddress;I)V+]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;]Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;
+HSPLjava/net/AbstractPlainSocketImpl;->connectToAddress(Ljava/net/InetAddress;II)V+]Ljava/net/InetAddress;Ljava/net/Inet4Address;,Ljava/net/Inet6Address;]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;
+HSPLjava/net/AbstractPlainSocketImpl;->create(Z)V+]Ljava/net/Socket;missing_types]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;]Ldalvik/system/CloseGuard;missing_types]Ljava/net/ServerSocket;Ljava/net/ServerSocket;
+HSPLjava/net/AbstractPlainSocketImpl;->doConnect(Ljava/net/InetAddress;II)V+]Ljava/net/Socket;missing_types]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;]Ldalvik/system/BlockGuard$Policy;missing_types
+HSPLjava/net/AbstractPlainSocketImpl;->finalize()V+]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;]Ldalvik/system/CloseGuard;missing_types
 HSPLjava/net/AbstractPlainSocketImpl;->getInputStream()Ljava/io/InputStream;+]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;
 HSPLjava/net/AbstractPlainSocketImpl;->getOption(I)Ljava/lang/Object;+]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;
 HSPLjava/net/AbstractPlainSocketImpl;->getOutputStream()Ljava/io/OutputStream;+]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;
@@ -2824,7 +2972,7 @@
 HSPLjava/net/AbstractPlainSocketImpl;->isClosedOrPending()Z+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;
 HSPLjava/net/AbstractPlainSocketImpl;->isConnectionReset()Z
 HSPLjava/net/AbstractPlainSocketImpl;->isConnectionResetPending()Z
-HSPLjava/net/AbstractPlainSocketImpl;->listen(I)V
+HSPLjava/net/AbstractPlainSocketImpl;->listen(I)V+]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;
 HSPLjava/net/AbstractPlainSocketImpl;->releaseFD()V+]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;
 HSPLjava/net/AbstractPlainSocketImpl;->setOption(ILjava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;
 HSPLjava/net/AbstractPlainSocketImpl;->socketClose()V+]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;
@@ -2833,21 +2981,23 @@
 HSPLjava/net/AddressCache$AddressCacheKey;-><init>(Ljava/lang/String;I)V
 HSPLjava/net/AddressCache$AddressCacheKey;->equals(Ljava/lang/Object;)Z
 HSPLjava/net/AddressCache$AddressCacheKey;->hashCode()I+]Ljava/lang/String;Ljava/lang/String;
-HSPLjava/net/AddressCache;->clear()V
+HSPLjava/net/AddressCache;->clear()V+]Llibcore/util/BasicLruCache;Llibcore/util/BasicLruCache;
 HSPLjava/net/AddressCache;->get(Ljava/lang/String;I)Ljava/lang/Object;+]Llibcore/util/BasicLruCache;Llibcore/util/BasicLruCache;
 HSPLjava/net/AddressCache;->put(Ljava/lang/String;I[Ljava/net/InetAddress;)V+]Llibcore/util/BasicLruCache;Llibcore/util/BasicLruCache;
 HSPLjava/net/AddressCache;->putUnknownHost(Ljava/lang/String;ILjava/lang/String;)V+]Llibcore/util/BasicLruCache;Llibcore/util/BasicLruCache;
+HSPLjava/net/ConnectException;-><init>(Ljava/lang/String;)V
 HSPLjava/net/ConnectException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
 HSPLjava/net/CookieHandler;-><init>()V
 HSPLjava/net/CookieHandler;->getDefault()Ljava/net/CookieHandler;
 HSPLjava/net/CookieManager$CookiePathComparator;-><init>()V
 HSPLjava/net/CookieManager;-><init>()V
 HSPLjava/net/CookieManager;-><init>(Ljava/net/CookieStore;Ljava/net/CookiePolicy;)V
-HSPLjava/net/CookieManager;->get(Ljava/net/URI;Ljava/util/Map;)Ljava/util/Map;+]Ljava/lang/String;Ljava/lang/String;]Ljava/net/HttpCookie;Ljava/net/HttpCookie;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/Collections$EmptyList;]Ljava/net/CookieStore;missing_types]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Ljava/util/Collections$UnmodifiableCollection$1;,Ljava/util/Collections$EmptyIterator;]Ljava/net/URI;Ljava/net/URI;
+HSPLjava/net/CookieManager;->get(Ljava/net/URI;Ljava/util/Map;)Ljava/util/Map;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/Collections$EmptyList;]Ljava/net/CookieStore;missing_types]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Ljava/util/Collections$UnmodifiableCollection$1;,Ljava/util/Collections$EmptyIterator;]Ljava/net/URI;Ljava/net/URI;]Ljava/net/HttpCookie;Ljava/net/HttpCookie;]Ljava/util/Map;Ljava/util/HashMap;
+HSPLjava/net/CookieManager;->getCookieStore()Ljava/net/CookieStore;
 HSPLjava/net/CookieManager;->normalizePath(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/net/CookieManager;->pathMatches(Ljava/net/URI;Ljava/net/HttpCookie;)Z+]Ljava/lang/String;Ljava/lang/String;]Ljava/net/HttpCookie;Ljava/net/HttpCookie;]Ljava/net/URI;Ljava/net/URI;
-HSPLjava/net/CookieManager;->put(Ljava/net/URI;Ljava/util/Map;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;missing_types]Ljava/net/HttpCookie;Ljava/net/HttpCookie;]Ljava/net/CookieStore;missing_types]Ljava/util/Map;missing_types]Ljava/util/Iterator;missing_types]Ljava/net/URI;Ljava/net/URI;]Ljava/util/Set;missing_types
-HSPLjava/net/CookieManager;->shouldAcceptInternal(Ljava/net/URI;Ljava/net/HttpCookie;)Z+]Ljava/net/CookiePolicy;Ljava/net/CookiePolicy$1;,Ljava/net/CookiePolicy$3;
+HSPLjava/net/CookieManager;->put(Ljava/net/URI;Ljava/util/Map;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Map;missing_types]Ljava/util/Iterator;missing_types]Ljava/util/Set;missing_types]Ljava/util/List;missing_types]Ljava/net/HttpCookie;Ljava/net/HttpCookie;]Ljava/net/CookieStore;missing_types]Ljava/net/URI;Ljava/net/URI;
+HSPLjava/net/CookieManager;->shouldAcceptInternal(Ljava/net/URI;Ljava/net/HttpCookie;)Z+]Ljava/net/CookiePolicy;Ljava/net/CookiePolicy$3;,Ljava/net/CookiePolicy$1;
 HSPLjava/net/CookieManager;->sortByPath(Ljava/util/List;)Ljava/util/List;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/net/HttpCookie;Ljava/net/HttpCookie;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
 HSPLjava/net/DatagramPacket;-><init>([BI)V
 HSPLjava/net/DatagramPacket;-><init>([BII)V+]Ljava/net/DatagramPacket;Ljava/net/DatagramPacket;
@@ -2866,7 +3016,7 @@
 HSPLjava/net/DatagramSocket$1;->run()Ljava/lang/Object;+]Ljava/net/DatagramSocket$1;Ljava/net/DatagramSocket$1;
 HSPLjava/net/DatagramSocket$1;->run()Ljava/lang/Void;+]Ljava/lang/Object;Ljava/net/PlainDatagramSocketImpl;,Lsun/nio/ch/DatagramSocketAdaptor$1;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/net/DatagramSocket;-><init>()V
-HSPLjava/net/DatagramSocket;-><init>(Ljava/net/SocketAddress;)V+]Ljava/net/DatagramSocket;Ljava/net/MulticastSocket;,Ljava/net/DatagramSocket;
+HSPLjava/net/DatagramSocket;-><init>(Ljava/net/SocketAddress;)V+]Ljava/net/DatagramSocket;Ljava/net/DatagramSocket;,Ljava/net/MulticastSocket;
 HSPLjava/net/DatagramSocket;->bind(Ljava/net/SocketAddress;)V+]Ljava/net/DatagramSocket;Ljava/net/MulticastSocket;,Ljava/net/DatagramSocket;]Ljava/net/DatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;]Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;
 HSPLjava/net/DatagramSocket;->checkAddress(Ljava/net/InetAddress;Ljava/lang/String;)V
 HSPLjava/net/DatagramSocket;->checkOldImpl()V
@@ -2877,15 +3027,19 @@
 HSPLjava/net/DatagramSocket;->isClosed()Z
 HSPLjava/net/DatagramSocket;->receive(Ljava/net/DatagramPacket;)V+]Ljava/net/DatagramSocket;Ljava/net/MulticastSocket;,Ljava/net/DatagramSocket;]Ljava/net/DatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;
 HSPLjava/net/DatagramSocket;->send(Ljava/net/DatagramPacket;)V+]Ljava/net/DatagramPacket;Ljava/net/DatagramPacket;]Ljava/net/DatagramSocket;Ljava/net/MulticastSocket;,Ljava/net/DatagramSocket;]Ljava/net/DatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;
-HSPLjava/net/DatagramSocket;->setSoTimeout(I)V+]Ljava/net/DatagramSocket;Ljava/net/MulticastSocket;,Ljava/net/DatagramSocket;]Ljava/net/DatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;
+HSPLjava/net/DatagramSocket;->setReuseAddress(Z)V+]Ljava/net/DatagramSocket;Ljava/net/DatagramSocket;,Ljava/net/MulticastSocket;]Ljava/net/DatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;
+HSPLjava/net/DatagramSocket;->setSoTimeout(I)V+]Ljava/net/DatagramSocket;Ljava/net/DatagramSocket;,Ljava/net/MulticastSocket;]Ljava/net/DatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;
 HSPLjava/net/DatagramSocketImpl;-><init>()V
 HSPLjava/net/DatagramSocketImpl;->setDatagramSocket(Ljava/net/DatagramSocket;)V
-HSPLjava/net/DefaultDatagramSocketImplFactory;->createDatagramSocketImpl(Z)Ljava/net/DatagramSocketImpl;
 HSPLjava/net/HttpCookie$11;->assign(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/util/Date;Ljava/util/Date;]Ljava/net/HttpCookie;Ljava/net/HttpCookie;
 HSPLjava/net/HttpCookie$4;->assign(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/net/HttpCookie;Ljava/net/HttpCookie;
 HSPLjava/net/HttpCookie$6;->assign(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/net/HttpCookie;Ljava/net/HttpCookie;
+HSPLjava/net/HttpCookie$8;->assign(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/net/HttpCookie;Ljava/net/HttpCookie;
 HSPLjava/net/HttpCookie$9;->assign(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/net/HttpCookie;Ljava/net/HttpCookie;
+HSPLjava/net/HttpCookie;-><init>(Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/net/HttpCookie;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;
+HSPLjava/net/HttpCookie;->access$000(Ljava/net/HttpCookie;)J
+HSPLjava/net/HttpCookie;->assignAttribute(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/net/HttpCookie$CookieAttributeAssignor;megamorphic_types]Ljava/util/Map;Ljava/util/HashMap;
 HSPLjava/net/HttpCookie;->getDomain()Ljava/lang/String;
 HSPLjava/net/HttpCookie;->getMaxAge()J
 HSPLjava/net/HttpCookie;->getName()Ljava/lang/String;
@@ -2893,25 +3047,37 @@
 HSPLjava/net/HttpCookie;->getPortlist()Ljava/lang/String;
 HSPLjava/net/HttpCookie;->getValue()Ljava/lang/String;
 HSPLjava/net/HttpCookie;->getVersion()I
+HSPLjava/net/HttpCookie;->guessCookieVersion(Ljava/lang/String;)I
 HSPLjava/net/HttpCookie;->hasExpired()Z
+HSPLjava/net/HttpCookie;->isToken(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Set;Ljava/util/HashSet;
+HSPLjava/net/HttpCookie;->parse(Ljava/lang/String;)Ljava/util/List;
+HSPLjava/net/HttpCookie;->parse(Ljava/lang/String;Z)Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/net/HttpCookie;Ljava/net/HttpCookie;]Ljava/lang/String;Ljava/lang/String;
+HSPLjava/net/HttpCookie;->parseInternal(Ljava/lang/String;Z)Ljava/net/HttpCookie;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/StringTokenizer;Ljava/util/StringTokenizer;
 HSPLjava/net/HttpCookie;->setDomain(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/net/HttpCookie;->setHttpOnly(Z)V
 HSPLjava/net/HttpCookie;->setMaxAge(J)V
 HSPLjava/net/HttpCookie;->setPath(Ljava/lang/String;)V
+HSPLjava/net/HttpCookie;->setSecure(Z)V
+HSPLjava/net/HttpCookie;->setVersion(I)V
+HSPLjava/net/HttpCookie;->startsWithIgnoreCase(Ljava/lang/String;Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String;
+HSPLjava/net/HttpCookie;->stripOffSurroundingQuote(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/net/HttpCookie;->toNetscapeHeaderString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/net/HttpCookie;Ljava/net/HttpCookie;
 HSPLjava/net/HttpCookie;->toString()Ljava/lang/String;+]Ljava/net/HttpCookie;Ljava/net/HttpCookie;
 HSPLjava/net/HttpURLConnection;-><init>(Ljava/net/URL;)V
 HSPLjava/net/HttpURLConnection;->getFollowRedirects()Z
 HSPLjava/net/HttpURLConnection;->getRequestMethod()Ljava/lang/String;
 HSPLjava/net/HttpURLConnection;->setChunkedStreamingMode(I)V
+HSPLjava/net/HttpURLConnection;->setInstanceFollowRedirects(Z)V
+HSPLjava/net/HttpURLConnection;->setRequestMethod(Ljava/lang/String;)V
 HSPLjava/net/IDN;->toASCII(Ljava/lang/String;)Ljava/lang/String;
-HSPLjava/net/IDN;->toASCII(Ljava/lang/String;I)Ljava/lang/String;
+HSPLjava/net/IDN;->toASCII(Ljava/lang/String;I)Ljava/lang/String;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;
 HSPLjava/net/InMemoryCookieStore;-><init>()V
 HSPLjava/net/InMemoryCookieStore;-><init>(I)V
 HSPLjava/net/InMemoryCookieStore;->get(Ljava/net/URI;)Ljava/util/List;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/net/URI;Ljava/net/URI;
 HSPLjava/net/InMemoryCookieStore;->getEffectiveURI(Ljava/net/URI;)Ljava/net/URI;+]Ljava/net/URI;Ljava/net/URI;
 HSPLjava/net/InMemoryCookieStore;->getInternal1(Ljava/util/List;Ljava/util/Map;Ljava/lang/String;)V+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/net/HttpCookie;Ljava/net/HttpCookie;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;,Ljava/util/ArrayList$Itr;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
-HSPLjava/net/InMemoryCookieStore;->getInternal2(Ljava/util/List;Ljava/util/Map;Ljava/lang/Comparable;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/net/HttpCookie;Ljava/net/HttpCookie;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/lang/Comparable;Ljava/net/URI;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;,Ljava/util/ArrayList$Itr;]Ljava/util/Set;Ljava/util/HashMap$KeySet;
+HSPLjava/net/InMemoryCookieStore;->getInternal2(Ljava/util/List;Ljava/util/Map;Ljava/lang/Comparable;)V+]Ljava/util/Map;Ljava/util/HashMap;]Ljava/lang/Comparable;Ljava/net/URI;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;,Ljava/util/ArrayList$Itr;]Ljava/util/Set;Ljava/util/HashMap$KeySet;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/net/HttpCookie;Ljava/net/HttpCookie;
+HSPLjava/net/Inet4Address;-><init>()V+]Ljava/net/Inet4Address;Ljava/net/Inet4Address;
 HSPLjava/net/Inet4Address;-><init>(Ljava/lang/String;[B)V+]Ljava/net/Inet4Address;Ljava/net/Inet4Address;
 HSPLjava/net/Inet4Address;->equals(Ljava/lang/Object;)Z+]Ljava/net/Inet4Address;Ljava/net/Inet4Address;]Ljava/net/InetAddress;Ljava/net/Inet4Address;]Ljava/net/InetAddress$InetAddressHolder;Ljava/net/InetAddress$InetAddressHolder;
 HSPLjava/net/Inet4Address;->getAddress()[B+]Ljava/net/Inet4Address;Ljava/net/Inet4Address;]Ljava/net/InetAddress$InetAddressHolder;Ljava/net/InetAddress$InetAddressHolder;
@@ -2934,7 +3100,7 @@
 HSPLjava/net/Inet6Address$Inet6AddressHolder;->setAddr([B)V
 HSPLjava/net/Inet6Address;-><init>(Ljava/lang/String;[BI)V+]Ljava/net/Inet6Address$Inet6AddressHolder;Ljava/net/Inet6Address$Inet6AddressHolder;]Ljava/net/InetAddress$InetAddressHolder;Ljava/net/InetAddress$InetAddressHolder;
 HSPLjava/net/Inet6Address;->equals(Ljava/lang/Object;)Z+]Ljava/net/Inet6Address$Inet6AddressHolder;Ljava/net/Inet6Address$Inet6AddressHolder;
-HSPLjava/net/Inet6Address;->getAddress()[B
+HSPLjava/net/Inet6Address;->getAddress()[B+][B[B
 HSPLjava/net/Inet6Address;->getByAddress(Ljava/lang/String;[BI)Ljava/net/Inet6Address;
 HSPLjava/net/Inet6Address;->getHostAddress()Ljava/lang/String;+]Llibcore/io/Os;missing_types
 HSPLjava/net/Inet6Address;->getScopeId()I
@@ -2943,32 +3109,34 @@
 HSPLjava/net/Inet6Address;->isLinkLocalAddress()Z+]Ljava/net/Inet6Address$Inet6AddressHolder;Ljava/net/Inet6Address$Inet6AddressHolder;
 HSPLjava/net/Inet6Address;->isLoopbackAddress()Z+]Ljava/net/Inet6Address$Inet6AddressHolder;Ljava/net/Inet6Address$Inet6AddressHolder;
 HSPLjava/net/Inet6Address;->isMulticastAddress()Z+]Ljava/net/Inet6Address$Inet6AddressHolder;Ljava/net/Inet6Address$Inet6AddressHolder;
-HSPLjava/net/Inet6AddressImpl;->clearAddressCache()V+]Ljava/net/AddressCache;Ljava/net/AddressCache;
+HSPLjava/net/Inet6AddressImpl;->clearAddressCache()V+]Ljava/net/AddressCache;missing_types
 HSPLjava/net/Inet6AddressImpl;->lookupAllHostAddr(Ljava/lang/String;I)[Ljava/net/InetAddress;
-HSPLjava/net/Inet6AddressImpl;->lookupHostByName(Ljava/lang/String;I)[Ljava/net/InetAddress;+]Llibcore/io/Os;missing_types]Ljava/net/AddressCache;Ljava/net/AddressCache;]Ljava/net/InetAddress;Ljava/net/Inet4Address;,Ljava/net/Inet6Address;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/system/GaiException;Landroid/system/GaiException;
+HSPLjava/net/Inet6AddressImpl;->lookupHostByName(Ljava/lang/String;I)[Ljava/net/InetAddress;+]Llibcore/io/Os;missing_types]Ljava/net/AddressCache;missing_types]Ljava/net/InetAddress;Ljava/net/Inet4Address;,Ljava/net/Inet6Address;]Ldalvik/system/BlockGuard$Policy;missing_types]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/system/GaiException;missing_types
 HSPLjava/net/InetAddress$InetAddressHolder;-><init>()V
 HSPLjava/net/InetAddress$InetAddressHolder;->getAddress()I
 HSPLjava/net/InetAddress$InetAddressHolder;->getHostName()Ljava/lang/String;
 HSPLjava/net/InetAddress$InetAddressHolder;->init(Ljava/lang/String;I)V
 HSPLjava/net/InetAddress;-><init>()V
 HSPLjava/net/InetAddress;->clearDnsCache()V+]Ljava/net/InetAddressImpl;Ljava/net/Inet6AddressImpl;
-HSPLjava/net/InetAddress;->getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress;+]Ljava/net/InetAddressImpl;Ljava/net/Inet6AddressImpl;
-HSPLjava/net/InetAddress;->getAllByNameOnNet(Ljava/lang/String;I)[Ljava/net/InetAddress;+]Ljava/net/InetAddressImpl;Ljava/net/Inet6AddressImpl;
+HSPLjava/net/InetAddress;->getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress;+]Ljava/net/InetAddressImpl;Ljava/net/Inet6AddressImpl;][Ljava/net/InetAddress;[Ljava/net/InetAddress;
+HSPLjava/net/InetAddress;->getAllByNameOnNet(Ljava/lang/String;I)[Ljava/net/InetAddress;+]Ljava/net/InetAddressImpl;Ljava/net/Inet6AddressImpl;][Ljava/net/InetAddress;[Ljava/net/InetAddress;
 HSPLjava/net/InetAddress;->getByAddress(Ljava/lang/String;[B)Ljava/net/InetAddress;
 HSPLjava/net/InetAddress;->getByAddress(Ljava/lang/String;[BI)Ljava/net/InetAddress;
 HSPLjava/net/InetAddress;->getByAddress([B)Ljava/net/InetAddress;
 HSPLjava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;+]Ljava/net/InetAddressImpl;Ljava/net/Inet6AddressImpl;
+HSPLjava/net/InetAddress;->getHostName()Ljava/lang/String;+]Ljava/net/InetAddress;Ljava/net/Inet4Address;,Ljava/net/Inet6Address;]Ljava/net/InetAddress$InetAddressHolder;Ljava/net/InetAddress$InetAddressHolder;
 HSPLjava/net/InetAddress;->holder()Ljava/net/InetAddress$InetAddressHolder;
-HSPLjava/net/InetAddress;->parseNumericAddress(Ljava/lang/String;)Ljava/net/InetAddress;
-HSPLjava/net/InetAddress;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/net/InetAddress;Ljava/net/Inet6Address;,Ljava/net/Inet4Address;]Ljava/net/InetAddress$InetAddressHolder;Ljava/net/InetAddress$InetAddressHolder;
+HSPLjava/net/InetAddress;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/net/InetAddress;Ljava/net/Inet4Address;,Ljava/net/Inet6Address;]Ljava/net/InetAddress$InetAddressHolder;Ljava/net/InetAddress$InetAddressHolder;
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;-><init>(Ljava/lang/String;Ljava/net/InetAddress;I)V
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;-><init>(Ljava/lang/String;Ljava/net/InetAddress;ILjava/net/InetSocketAddress$1;)V
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->access$400(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)I
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->access$500(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)Ljava/net/InetAddress;
+HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->access$600(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)Ljava/lang/String;
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->access$700(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)Ljava/lang/String;
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->access$800(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)Z
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->equals(Ljava/lang/Object;)Z+]Ljava/net/InetAddress;Ljava/net/Inet4Address;,Ljava/net/Inet6Address;
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->getAddress()Ljava/net/InetAddress;
+HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->getHostName()Ljava/lang/String;
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->getHostString()Ljava/lang/String;+]Ljava/net/InetAddress;Ljava/net/Inet4Address;,Ljava/net/Inet6Address;]Ljava/net/InetAddress$InetAddressHolder;Ljava/net/InetAddress$InetAddressHolder;
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->getPort()I
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->hashCode()I+]Ljava/lang/String;Ljava/lang/String;]Ljava/net/InetAddress;Ljava/net/Inet6Address;,Ljava/net/Inet4Address;
@@ -2984,6 +3152,7 @@
 HSPLjava/net/InetSocketAddress;->createUnresolved(Ljava/lang/String;I)Ljava/net/InetSocketAddress;
 HSPLjava/net/InetSocketAddress;->equals(Ljava/lang/Object;)Z+]Ljava/net/InetSocketAddress$InetSocketAddressHolder;Ljava/net/InetSocketAddress$InetSocketAddressHolder;
 HSPLjava/net/InetSocketAddress;->getAddress()Ljava/net/InetAddress;
+HSPLjava/net/InetSocketAddress;->getHostName()Ljava/lang/String;
 HSPLjava/net/InetSocketAddress;->getHostString()Ljava/lang/String;
 HSPLjava/net/InetSocketAddress;->getPort()I
 HSPLjava/net/InetSocketAddress;->hashCode()I+]Ljava/net/InetSocketAddress$InetSocketAddressHolder;Ljava/net/InetSocketAddress$InetSocketAddressHolder;
@@ -2994,31 +3163,42 @@
 HSPLjava/net/JarURLConnection;-><init>(Ljava/net/URL;)V
 HSPLjava/net/JarURLConnection;->getEntryName()Ljava/lang/String;
 HSPLjava/net/JarURLConnection;->parseSpecs(Ljava/net/URL;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/net/URL;Ljava/net/URL;
+HSPLjava/net/MulticastSocket;-><init>(Ljava/net/SocketAddress;)V+]Ljava/net/MulticastSocket;Ljava/net/MulticastSocket;
+HSPLjava/net/NetworkInterface$1checkedAddresses;-><init>(Ljava/net/NetworkInterface;)V
+HSPLjava/net/NetworkInterface$1checkedAddresses;->hasMoreElements()Z
+HSPLjava/net/NetworkInterface$1checkedAddresses;->nextElement()Ljava/lang/Object;+]Ljava/net/NetworkInterface$1checkedAddresses;Ljava/net/NetworkInterface$1checkedAddresses;
+HSPLjava/net/NetworkInterface$1checkedAddresses;->nextElement()Ljava/net/InetAddress;
 HSPLjava/net/NetworkInterface;-><init>(Ljava/lang/String;I[Ljava/net/InetAddress;)V
+HSPLjava/net/NetworkInterface;->access$000(Ljava/net/NetworkInterface;)[Ljava/net/InetAddress;
 HSPLjava/net/NetworkInterface;->getAll()[Ljava/net/NetworkInterface;+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/net/NetworkInterface;Ljava/net/NetworkInterface;]Llibcore/io/Os;missing_types]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;,Ljava/util/ArrayList$Itr;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
+HSPLjava/net/NetworkInterface;->getFlags()I+]Llibcore/io/Os;missing_types]Landroid/system/ErrnoException;missing_types
 HSPLjava/net/NetworkInterface;->getIndex()I
+HSPLjava/net/NetworkInterface;->getInetAddresses()Ljava/util/Enumeration;
 HSPLjava/net/NetworkInterface;->getName()Ljava/lang/String;
 HSPLjava/net/NetworkInterface;->getNetworkInterfaces()Ljava/util/Enumeration;
+HSPLjava/net/NetworkInterface;->isLoopback()Z
+HSPLjava/net/NetworkInterface;->isUp()Z
 HSPLjava/net/Parts;-><init>(Ljava/lang/String;Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/net/Parts;->getPath()Ljava/lang/String;
 HSPLjava/net/Parts;->getQuery()Ljava/lang/String;
 HSPLjava/net/Parts;->getRef()Ljava/lang/String;
-HSPLjava/net/PlainDatagramSocketImpl;-><init>()V
 HSPLjava/net/PlainDatagramSocketImpl;->bind0(ILjava/net/InetAddress;)V+]Ljava/net/PlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;]Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;
 HSPLjava/net/PlainDatagramSocketImpl;->datagramSocketClose()V
-HSPLjava/net/PlainDatagramSocketImpl;->datagramSocketCreate()V+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;
+HSPLjava/net/PlainDatagramSocketImpl;->datagramSocketCreate()V+]Llibcore/io/Os;missing_types
 HSPLjava/net/PlainDatagramSocketImpl;->doRecv(Ljava/net/DatagramPacket;I)V+]Ljava/net/DatagramPacket;Ljava/net/DatagramPacket;]Ljava/net/PlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;
 HSPLjava/net/PlainDatagramSocketImpl;->receive0(Ljava/net/DatagramPacket;)V
 HSPLjava/net/PlainDatagramSocketImpl;->send(Ljava/net/DatagramPacket;)V+]Ljava/net/DatagramPacket;Ljava/net/DatagramPacket;]Ljava/net/PlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;
+HSPLjava/net/PlainDatagramSocketImpl;->socketSetOption(ILjava/lang/Object;)V+]Ljava/net/PlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;
+HSPLjava/net/PlainDatagramSocketImpl;->socketSetOption0(ILjava/lang/Object;)V+]Ljava/net/PlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl;
 HSPLjava/net/PlainSocketImpl;-><init>()V
 HSPLjava/net/PlainSocketImpl;->getMarkerFD()Ljava/io/FileDescriptor;+]Llibcore/io/Os;missing_types
 HSPLjava/net/PlainSocketImpl;->socketAccept(Ljava/net/SocketImpl;)V+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;]Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;
-HSPLjava/net/PlainSocketImpl;->socketBind(Ljava/net/InetAddress;I)V
+HSPLjava/net/PlainSocketImpl;->socketBind(Ljava/net/InetAddress;I)V+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;
 HSPLjava/net/PlainSocketImpl;->socketClose0(Z)V+]Llibcore/io/Os;missing_types]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;
 HSPLjava/net/PlainSocketImpl;->socketConnect(Ljava/net/InetAddress;II)V+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;]Ljava/net/PlainSocketImpl;Ljava/net/SocksSocketImpl;]Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;
 HSPLjava/net/PlainSocketImpl;->socketCreate(Z)V+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;
 HSPLjava/net/PlainSocketImpl;->socketGetOption(I)Ljava/lang/Object;
-HSPLjava/net/PlainSocketImpl;->socketListen(I)V
+HSPLjava/net/PlainSocketImpl;->socketListen(I)V+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;
 HSPLjava/net/PlainSocketImpl;->socketSetOption(ILjava/lang/Object;)V+]Ljava/net/PlainSocketImpl;Ljava/net/SocksSocketImpl;
 HSPLjava/net/PlainSocketImpl;->socketSetOption0(ILjava/lang/Object;)V
 HSPLjava/net/Proxy$Type;->values()[Ljava/net/Proxy$Type;
@@ -3029,18 +3209,20 @@
 HSPLjava/net/ProxySelector;->getDefault()Ljava/net/ProxySelector;
 HSPLjava/net/ProxySelector;->setDefault(Ljava/net/ProxySelector;)V
 HSPLjava/net/ResponseCache;->getDefault()Ljava/net/ResponseCache;
+HSPLjava/net/ServerSocket;-><init>()V
 HSPLjava/net/ServerSocket;->accept()Ljava/net/Socket;+]Ljava/net/ServerSocket;Ljava/net/ServerSocket;
+HSPLjava/net/ServerSocket;->bind(Ljava/net/SocketAddress;)V
 HSPLjava/net/ServerSocket;->bind(Ljava/net/SocketAddress;I)V+]Ljava/net/SocketImpl;Ljava/net/SocksSocketImpl;]Ljava/net/ServerSocket;Ljava/net/ServerSocket;]Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;
-HSPLjava/net/ServerSocket;->createImpl()V
-HSPLjava/net/ServerSocket;->getImpl()Ljava/net/SocketImpl;
+HSPLjava/net/ServerSocket;->createImpl()V+]Ljava/net/SocketImpl;Ljava/net/SocksSocketImpl;
+HSPLjava/net/ServerSocket;->getImpl()Ljava/net/SocketImpl;+]Ljava/net/ServerSocket;Ljava/net/ServerSocket;
 HSPLjava/net/ServerSocket;->implAccept(Ljava/net/Socket;)V+]Ljava/net/SocketImpl;Ljava/net/SocksSocketImpl;]Ljava/net/Socket;Ljava/net/Socket;]Ljava/net/ServerSocket;Ljava/net/ServerSocket;
 HSPLjava/net/ServerSocket;->isBound()Z
 HSPLjava/net/ServerSocket;->isClosed()Z
 HSPLjava/net/ServerSocket;->setBound()V
 HSPLjava/net/ServerSocket;->setCreated()V
-HSPLjava/net/ServerSocket;->setImpl()V
+HSPLjava/net/ServerSocket;->setImpl()V+]Ljava/net/SocketImpl;Ljava/net/SocksSocketImpl;
 HSPLjava/net/Socket$1;-><init>(Ljava/net/Socket;)V
-HSPLjava/net/Socket$1;->run()Ljava/lang/Boolean;+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;missing_types
+HSPLjava/net/Socket$1;->run()Ljava/lang/Boolean;+]Ljava/lang/Object;missing_types]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/net/Socket$1;->run()Ljava/lang/Object;+]Ljava/net/Socket$1;Ljava/net/Socket$1;
 HSPLjava/net/Socket$2;-><init>(Ljava/net/Socket;)V
 HSPLjava/net/Socket$2;->run()Ljava/io/InputStream;+]Ljava/net/SocketImpl;Ljava/net/SocksSocketImpl;
@@ -3051,11 +3233,11 @@
 HSPLjava/net/Socket;-><init>()V+]Ljava/net/Socket;missing_types
 HSPLjava/net/Socket;-><init>(Ljava/net/InetAddress;I)V
 HSPLjava/net/Socket;-><init>(Ljava/net/SocketImpl;)V+]Ljava/net/SocketImpl;missing_types
-HSPLjava/net/Socket;-><init>([Ljava/net/InetAddress;ILjava/net/SocketAddress;Z)V+]Ljava/net/Socket;missing_types]Ljava/net/SocketImpl;Ljava/net/SocksSocketImpl;
+HSPLjava/net/Socket;-><init>([Ljava/net/InetAddress;ILjava/net/SocketAddress;Z)V+]Ljava/net/SocketImpl;Ljava/net/SocksSocketImpl;]Ljava/net/Socket;missing_types
 HSPLjava/net/Socket;->checkAddress(Ljava/net/InetAddress;Ljava/lang/String;)V
 HSPLjava/net/Socket;->checkOldImpl()V+]Ljava/lang/Boolean;Ljava/lang/Boolean;
 HSPLjava/net/Socket;->close()V+]Ljava/net/SocketImpl;Ljava/net/SocksSocketImpl;]Ljava/net/Socket;missing_types
-HSPLjava/net/Socket;->connect(Ljava/net/SocketAddress;)V
+HSPLjava/net/Socket;->connect(Ljava/net/SocketAddress;)V+]Ljava/net/Socket;Ljava/net/Socket;
 HSPLjava/net/Socket;->connect(Ljava/net/SocketAddress;I)V+]Ljava/net/SocketImpl;Ljava/net/SocksSocketImpl;]Ljava/net/Socket;missing_types]Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;
 HSPLjava/net/Socket;->createImpl(Z)V+]Ljava/net/SocketImpl;Ljava/net/SocksSocketImpl;
 HSPLjava/net/Socket;->getFileDescriptor$()Ljava/io/FileDescriptor;+]Ljava/net/SocketImpl;Ljava/net/SocksSocketImpl;
@@ -3124,6 +3306,7 @@
 HSPLjava/net/URI$Parser;->scan(IIC)I
 HSPLjava/net/URI$Parser;->scan(IIJJ)I
 HSPLjava/net/URI$Parser;->scan(IILjava/lang/String;Ljava/lang/String;)I
+HSPLjava/net/URI$Parser;->scanByte(II)I
 HSPLjava/net/URI$Parser;->scanEscape(IIC)I
 HSPLjava/net/URI$Parser;->scanIPv4Address(IIZ)I
 HSPLjava/net/URI$Parser;->substring(II)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;
@@ -3163,11 +3346,12 @@
 HSPLjava/net/URI;->access$800()J
 HSPLjava/net/URI;->access$900()J
 HSPLjava/net/URI;->appendAuthority(Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;
-HSPLjava/net/URI;->appendFragment(Ljava/lang/StringBuffer;Ljava/lang/String;)V
+HSPLjava/net/URI;->appendEscape(Ljava/lang/StringBuffer;B)V+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;
+HSPLjava/net/URI;->appendFragment(Ljava/lang/StringBuffer;Ljava/lang/String;)V+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;
 HSPLjava/net/URI;->appendSchemeSpecificPart(Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/net/URI;->checkPath(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/net/URI;->create(Ljava/lang/String;)Ljava/net/URI;+]Ljava/net/URISyntaxException;Ljava/net/URISyntaxException;
-HSPLjava/net/URI;->decode(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/Object;Ljava/nio/HeapCharBuffer;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
+HSPLjava/net/URI;->decode(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/Object;Ljava/nio/HeapCharBuffer;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetDecoder;missing_types
 HSPLjava/net/URI;->defineString()V+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/net/URI;Ljava/net/URI;
 HSPLjava/net/URI;->encode(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/net/URI;->equal(Ljava/lang/String;Ljava/lang/String;)Z
@@ -3195,7 +3379,9 @@
 HSPLjava/net/URI;->toLower(C)I
 HSPLjava/net/URI;->toString()Ljava/lang/String;
 HSPLjava/net/URI;->toString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;
+HSPLjava/net/URI;->toURL()Ljava/net/URL;+]Ljava/net/URI;Ljava/net/URI;
 HSPLjava/net/URL;-><init>(Ljava/lang/String;)V
+HSPLjava/net/URL;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
 HSPLjava/net/URL;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/net/URLStreamHandler;)V+]Ljava/net/Parts;Ljava/net/Parts;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/net/URL;-><init>(Ljava/net/URL;Ljava/lang/String;)V
 HSPLjava/net/URL;-><init>(Ljava/net/URL;Ljava/lang/String;Ljava/net/URLStreamHandler;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/net/URLStreamHandler;missing_types]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/net/MalformedURLException;Ljava/net/MalformedURLException;]Ljava/lang/Exception;Ljava/lang/NullPointerException;
@@ -3211,7 +3397,7 @@
 HSPLjava/net/URL;->getURLStreamHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler;+]Ljava/util/Hashtable;Ljava/util/Hashtable;]Ljava/util/StringTokenizer;Ljava/util/StringTokenizer;
 HSPLjava/net/URL;->getUserInfo()Ljava/lang/String;
 HSPLjava/net/URL;->isValidProtocol(Ljava/lang/String;)Z
-HSPLjava/net/URL;->openConnection()Ljava/net/URLConnection;+]Ljava/net/URLStreamHandler;Lcom/android/okhttp/HttpsHandler;,Llibcore/io/ClassPathURLStreamHandler;,Lcom/android/okhttp/HttpHandler;
+HSPLjava/net/URL;->openConnection()Ljava/net/URLConnection;+]Ljava/net/URLStreamHandler;missing_types
 HSPLjava/net/URL;->openStream()Ljava/io/InputStream;
 HSPLjava/net/URL;->set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/net/URL;->toExternalForm()Ljava/lang/String;+]Ljava/net/URLStreamHandler;missing_types
@@ -3221,14 +3407,19 @@
 HSPLjava/net/URLConnection;->getContentLength()I+]Ljava/net/URLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLjava/net/URLConnection;->getContentLengthLong()J+]Ljava/net/URLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLjava/net/URLConnection;->getContentType()Ljava/lang/String;+]Ljava/net/URLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
+HSPLjava/net/URLConnection;->getHeaderFieldInt(Ljava/lang/String;I)I+]Ljava/net/URLConnection;Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;
 HSPLjava/net/URLConnection;->getHeaderFieldLong(Ljava/lang/String;J)J+]Ljava/net/URLConnection;missing_types
+HSPLjava/net/URLConnection;->getReadTimeout()I
 HSPLjava/net/URLConnection;->getURL()Ljava/net/URL;
 HSPLjava/net/URLConnection;->getUseCaches()Z
+HSPLjava/net/URLConnection;->setDefaultUseCaches(Z)V
 HSPLjava/net/URLConnection;->setDoInput(Z)V
 HSPLjava/net/URLConnection;->setDoOutput(Z)V
+HSPLjava/net/URLConnection;->setReadTimeout(I)V
 HSPLjava/net/URLConnection;->setUseCaches(Z)V
-HSPLjava/net/URLDecoder;->decode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/lang/String;Ljava/lang/String;
-HSPLjava/net/URLEncoder;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/BitSet;Ljava/util/BitSet;]Ljava/io/CharArrayWriter;Ljava/io/CharArrayWriter;
+HSPLjava/net/URLDecoder;->decode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;
+HSPLjava/net/URLDecoder;->isValidHexChar(C)Z
+HSPLjava/net/URLEncoder;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/BitSet;Ljava/util/BitSet;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/lang/String;Ljava/lang/String;]Ljava/io/CharArrayWriter;Ljava/io/CharArrayWriter;
 HSPLjava/net/URLStreamHandler;-><init>()V
 HSPLjava/net/URLStreamHandler;->parseURL(Ljava/net/URL;Ljava/lang/String;II)V+]Ljava/net/URLStreamHandler;missing_types]Ljava/lang/String;Ljava/lang/String;]Ljava/net/URL;Ljava/net/URL;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/net/URLStreamHandler;->setURL(Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/net/URL;Ljava/net/URL;
@@ -3312,23 +3503,25 @@
 HSPLjava/nio/ByteBuffer;->arrayOffset()I
 HSPLjava/nio/ByteBuffer;->clear()Ljava/nio/Buffer;
 HSPLjava/nio/ByteBuffer;->compare(BB)I
-HSPLjava/nio/ByteBuffer;->compareTo(Ljava/nio/ByteBuffer;)I+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;,Ljava/nio/HeapByteBuffer;
+HSPLjava/nio/ByteBuffer;->compareTo(Ljava/nio/ByteBuffer;)I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/DirectByteBuffer;
+HSPLjava/nio/ByteBuffer;->equals(BB)Z
+HSPLjava/nio/ByteBuffer;->equals(Ljava/lang/Object;)Z+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/DirectByteBuffer;
 HSPLjava/nio/ByteBuffer;->flip()Ljava/nio/Buffer;
 HSPLjava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer;+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/DirectByteBuffer;
 HSPLjava/nio/ByteBuffer;->hasArray()Z
-HSPLjava/nio/ByteBuffer;->hashCode()I+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;,Ljava/nio/HeapByteBuffer;
+HSPLjava/nio/ByteBuffer;->hashCode()I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/DirectByteBuffer;
 HSPLjava/nio/ByteBuffer;->limit(I)Ljava/nio/Buffer;
 HSPLjava/nio/ByteBuffer;->mark()Ljava/nio/Buffer;
 HSPLjava/nio/ByteBuffer;->order()Ljava/nio/ByteOrder;
 HSPLjava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
 HSPLjava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
 HSPLjava/nio/ByteBuffer;->put(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/DirectByteBuffer;
-HSPLjava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;,Ljava/nio/HeapByteBuffer;
+HSPLjava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/DirectByteBuffer;
 HSPLjava/nio/ByteBuffer;->reset()Ljava/nio/Buffer;
 HSPLjava/nio/ByteBuffer;->rewind()Ljava/nio/Buffer;
 HSPLjava/nio/ByteBuffer;->wrap([B)Ljava/nio/ByteBuffer;
 HSPLjava/nio/ByteBuffer;->wrap([BII)Ljava/nio/ByteBuffer;
-HSPLjava/nio/ByteBufferAsCharBuffer;-><init>(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;
+HSPLjava/nio/ByteBufferAsCharBuffer;-><init>(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;,Ljava/nio/HeapByteBuffer;
 HSPLjava/nio/ByteBufferAsCharBuffer;->duplicate()Ljava/nio/CharBuffer;+]Ljava/nio/ByteBufferAsCharBuffer;Ljava/nio/ByteBufferAsCharBuffer;
 HSPLjava/nio/ByteBufferAsCharBuffer;->get(I)C+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;]Ljava/nio/ByteBufferAsCharBuffer;Ljava/nio/ByteBufferAsCharBuffer;
 HSPLjava/nio/ByteBufferAsCharBuffer;->get([CII)Ljava/nio/CharBuffer;+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;]Ljava/nio/ByteBufferAsCharBuffer;Ljava/nio/ByteBufferAsCharBuffer;
@@ -3340,7 +3533,7 @@
 HSPLjava/nio/ByteBufferAsFloatBuffer;-><init>(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/DirectByteBuffer;
 HSPLjava/nio/ByteBufferAsFloatBuffer;->ix(I)I
 HSPLjava/nio/ByteBufferAsFloatBuffer;->put(IF)Ljava/nio/FloatBuffer;+]Ljava/nio/ByteBufferAsFloatBuffer;Ljava/nio/ByteBufferAsFloatBuffer;]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;
-HSPLjava/nio/ByteBufferAsFloatBuffer;->put([FII)Ljava/nio/FloatBuffer;+]Ljava/nio/ByteBufferAsFloatBuffer;Ljava/nio/ByteBufferAsFloatBuffer;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/DirectByteBuffer;
+HSPLjava/nio/ByteBufferAsFloatBuffer;->put([FII)Ljava/nio/FloatBuffer;+]Ljava/nio/ByteBufferAsFloatBuffer;Ljava/nio/ByteBufferAsFloatBuffer;]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;,Ljava/nio/HeapByteBuffer;
 HSPLjava/nio/ByteBufferAsIntBuffer;-><init>(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/DirectByteBuffer;
 HSPLjava/nio/ByteBufferAsIntBuffer;->get([III)Ljava/nio/IntBuffer;+]Ljava/nio/ByteBufferAsIntBuffer;Ljava/nio/ByteBufferAsIntBuffer;]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;,Ljava/nio/HeapByteBuffer;
 HSPLjava/nio/ByteBufferAsIntBuffer;->ix(I)I
@@ -3370,8 +3563,9 @@
 HSPLjava/nio/CharBuffer;->wrap(Ljava/lang/CharSequence;II)Ljava/nio/CharBuffer;
 HSPLjava/nio/CharBuffer;->wrap([C)Ljava/nio/CharBuffer;
 HSPLjava/nio/CharBuffer;->wrap([CII)Ljava/nio/CharBuffer;
-HSPLjava/nio/DirectByteBuffer$MemoryRef;-><init>(I)V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;
+HSPLjava/nio/DirectByteBuffer$MemoryRef;-><init>(I)V+]Ldalvik/system/VMRuntime;missing_types
 HSPLjava/nio/DirectByteBuffer$MemoryRef;-><init>(JLjava/lang/Object;)V
+HSPLjava/nio/DirectByteBuffer$MemoryRef;->free()V
 HSPLjava/nio/DirectByteBuffer;-><init>(IJLjava/io/FileDescriptor;Ljava/lang/Runnable;Z)V
 HSPLjava/nio/DirectByteBuffer;-><init>(ILjava/nio/DirectByteBuffer$MemoryRef;)V
 HSPLjava/nio/DirectByteBuffer;-><init>(JI)V
@@ -3406,6 +3600,7 @@
 HSPLjava/nio/DirectByteBuffer;->isReadOnly()Z
 HSPLjava/nio/DirectByteBuffer;->ix(I)J
 HSPLjava/nio/DirectByteBuffer;->put(B)Ljava/nio/ByteBuffer;+]Ljava/nio/DirectByteBuffer;Ljava/nio/DirectByteBuffer;
+HSPLjava/nio/DirectByteBuffer;->put(IB)Ljava/nio/ByteBuffer;+]Ljava/nio/DirectByteBuffer;Ljava/nio/DirectByteBuffer;
 HSPLjava/nio/DirectByteBuffer;->put(JB)Ljava/nio/ByteBuffer;
 HSPLjava/nio/DirectByteBuffer;->put(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
 HSPLjava/nio/DirectByteBuffer;->put([BII)Ljava/nio/ByteBuffer;+]Ljava/nio/DirectByteBuffer;Ljava/nio/DirectByteBuffer;
@@ -3415,6 +3610,7 @@
 HSPLjava/nio/DirectByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;+]Ljava/nio/DirectByteBuffer;Ljava/nio/DirectByteBuffer;
 HSPLjava/nio/DirectByteBuffer;->putInt(II)Ljava/nio/ByteBuffer;+]Ljava/nio/DirectByteBuffer;Ljava/nio/DirectByteBuffer;
 HSPLjava/nio/DirectByteBuffer;->putInt(JI)Ljava/nio/ByteBuffer;
+HSPLjava/nio/DirectByteBuffer;->putLong(IJ)Ljava/nio/ByteBuffer;+]Ljava/nio/DirectByteBuffer;Ljava/nio/DirectByteBuffer;
 HSPLjava/nio/DirectByteBuffer;->putLong(JJ)Ljava/nio/ByteBuffer;
 HSPLjava/nio/DirectByteBuffer;->putUnchecked(I[FII)V
 HSPLjava/nio/DirectByteBuffer;->setAccessible(Z)V
@@ -3432,6 +3628,7 @@
 HSPLjava/nio/HeapByteBuffer;->_get(I)B
 HSPLjava/nio/HeapByteBuffer;->_put(IB)V
 HSPLjava/nio/HeapByteBuffer;->asIntBuffer()Ljava/nio/IntBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer;
+HSPLjava/nio/HeapByteBuffer;->asLongBuffer()Ljava/nio/LongBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->asReadOnlyBuffer()Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->asShortBuffer()Ljava/nio/ShortBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->compact()Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer;
@@ -3448,10 +3645,12 @@
 HSPLjava/nio/HeapByteBuffer;->getShort()S+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->getShort(I)S+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->getUnchecked(I[III)V+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer;
+HSPLjava/nio/HeapByteBuffer;->getUnchecked(I[SII)V
 HSPLjava/nio/HeapByteBuffer;->isDirect()Z
 HSPLjava/nio/HeapByteBuffer;->isReadOnly()Z
 HSPLjava/nio/HeapByteBuffer;->ix(I)I
 HSPLjava/nio/HeapByteBuffer;->put(B)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer;
+HSPLjava/nio/HeapByteBuffer;->put(IB)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->put([BII)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->putChar(C)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->putFloat(F)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer;
@@ -3475,7 +3674,12 @@
 HSPLjava/nio/HeapCharBuffer;->toString(II)Ljava/lang/String;
 HSPLjava/nio/IntBuffer;-><init>(IIII)V
 HSPLjava/nio/IntBuffer;-><init>(IIII[II)V
+HSPLjava/nio/IntBuffer;->allocate(I)Ljava/nio/IntBuffer;
+HSPLjava/nio/IntBuffer;->array()Ljava/lang/Object;+]Ljava/nio/IntBuffer;Ljava/nio/HeapIntBuffer;
+HSPLjava/nio/IntBuffer;->array()[I
+HSPLjava/nio/IntBuffer;->arrayOffset()I
 HSPLjava/nio/IntBuffer;->get([I)Ljava/nio/IntBuffer;+]Ljava/nio/IntBuffer;Ljava/nio/ByteBufferAsIntBuffer;
+HSPLjava/nio/IntBuffer;->hasArray()Z
 HSPLjava/nio/IntBuffer;->limit(I)Ljava/nio/Buffer;
 HSPLjava/nio/IntBuffer;->position(I)Ljava/nio/Buffer;
 HSPLjava/nio/LongBuffer;-><init>(IIII)V
@@ -3490,8 +3694,9 @@
 HSPLjava/nio/MappedByteBuffer;->mappingAddress(J)J
 HSPLjava/nio/MappedByteBuffer;->mappingLength(J)J+]Ljava/nio/MappedByteBuffer;Ljava/nio/DirectByteBuffer;
 HSPLjava/nio/MappedByteBuffer;->mappingOffset()J
-HSPLjava/nio/NIOAccess;->getBaseArray(Ljava/nio/Buffer;)Ljava/lang/Object;+]Ljava/nio/Buffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/HeapFloatBuffer;,Ljava/nio/HeapIntBuffer;,Ljava/nio/HeapShortBuffer;
-HSPLjava/nio/NIOAccess;->getBaseArrayOffset(Ljava/nio/Buffer;)I+]Ljava/nio/Buffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/HeapFloatBuffer;,Ljava/nio/HeapIntBuffer;,Ljava/nio/HeapShortBuffer;
+HSPLjava/nio/NIOAccess;->getBaseArray(Ljava/nio/Buffer;)Ljava/lang/Object;+]Ljava/nio/Buffer;Ljava/nio/HeapIntBuffer;,Ljava/nio/HeapByteBuffer;,Ljava/nio/HeapShortBuffer;,Ljava/nio/HeapFloatBuffer;
+HSPLjava/nio/NIOAccess;->getBaseArrayOffset(Ljava/nio/Buffer;)I+]Ljava/nio/Buffer;Ljava/nio/HeapIntBuffer;,Ljava/nio/HeapByteBuffer;,Ljava/nio/HeapShortBuffer;,Ljava/nio/HeapFloatBuffer;
+HSPLjava/nio/NioUtils;->freeDirectBuffer(Ljava/nio/ByteBuffer;)V+]Ljava/nio/DirectByteBuffer$MemoryRef;Ljava/nio/DirectByteBuffer$MemoryRef;]Lsun/misc/Cleaner;Lsun/misc/Cleaner;
 HSPLjava/nio/ShortBuffer;-><init>(IIII)V
 HSPLjava/nio/ShortBuffer;-><init>(IIII[SI)V
 HSPLjava/nio/ShortBuffer;->get([S)Ljava/nio/ShortBuffer;+]Ljava/nio/ShortBuffer;Ljava/nio/ByteBufferAsShortBuffer;
@@ -3501,11 +3706,14 @@
 HSPLjava/nio/StringCharBuffer;->get()C+]Ljava/nio/StringCharBuffer;Ljava/nio/StringCharBuffer;]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder;
 HSPLjava/nio/channels/Channels$1;-><init>(Ljava/nio/channels/WritableByteChannel;)V
 HSPLjava/nio/channels/Channels$1;->write([BII)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;
+HSPLjava/nio/channels/Channels$WritableByteChannelImpl;-><init>(Ljava/io/OutputStream;)V
+HSPLjava/nio/channels/Channels$WritableByteChannelImpl;->write(Ljava/nio/ByteBuffer;)I+]Ljava/nio/channels/Channels$WritableByteChannelImpl;Ljava/nio/channels/Channels$WritableByteChannelImpl;]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;,Ljava/nio/HeapByteBuffer;]Ljava/io/OutputStream;Landroid/os/ParcelFileDescriptor$AutoCloseOutputStream;,Ljava/io/ByteArrayOutputStream;,Ljava/io/FileOutputStream;
 HSPLjava/nio/channels/Channels;->access$000(Ljava/nio/channels/WritableByteChannel;Ljava/nio/ByteBuffer;)V
 HSPLjava/nio/channels/Channels;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V
+HSPLjava/nio/channels/Channels;->newChannel(Ljava/io/OutputStream;)Ljava/nio/channels/WritableByteChannel;
 HSPLjava/nio/channels/Channels;->newInputStream(Ljava/nio/channels/ReadableByteChannel;)Ljava/io/InputStream;
 HSPLjava/nio/channels/Channels;->newOutputStream(Ljava/nio/channels/WritableByteChannel;)Ljava/io/OutputStream;
-HSPLjava/nio/channels/Channels;->writeFully(Ljava/nio/channels/WritableByteChannel;Ljava/nio/ByteBuffer;)V
+HSPLjava/nio/channels/Channels;->writeFully(Ljava/nio/channels/WritableByteChannel;Ljava/nio/ByteBuffer;)V+]Ljava/nio/channels/SelectableChannel;Lsun/nio/ch/SocketChannelImpl;
 HSPLjava/nio/channels/Channels;->writeFullyImpl(Ljava/nio/channels/WritableByteChannel;Ljava/nio/ByteBuffer;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/channels/WritableByteChannel;Lsun/nio/ch/FileChannelImpl;,Lsun/nio/ch/SocketChannelImpl;
 HSPLjava/nio/channels/FileChannel;-><init>()V
 HSPLjava/nio/channels/FileChannel;->lock()Ljava/nio/channels/FileLock;+]Ljava/nio/channels/FileChannel;Lsun/nio/ch/FileChannelImpl;
@@ -3516,20 +3724,63 @@
 HSPLjava/nio/channels/FileLock;->acquiredBy()Ljava/nio/channels/Channel;
 HSPLjava/nio/channels/FileLock;->position()J
 HSPLjava/nio/channels/FileLock;->size()J
+HSPLjava/nio/channels/SelectableChannel;-><init>()V
+HSPLjava/nio/channels/SelectableChannel;->register(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;+]Ljava/nio/channels/SelectableChannel;Lsun/nio/ch/DatagramChannelImpl;
+HSPLjava/nio/channels/SelectionKey;-><init>()V
+HSPLjava/nio/channels/SelectionKey;->attach(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;
+HSPLjava/nio/channels/Selector;-><init>()V
+HSPLjava/nio/channels/Selector;->open()Ljava/nio/channels/Selector;+]Ljava/nio/channels/spi/SelectorProvider;Lsun/nio/ch/PollSelectorProvider;
+HSPLjava/nio/channels/SocketChannel;-><init>(Ljava/nio/channels/spi/SelectorProvider;)V
+HSPLjava/nio/channels/SocketChannel;->open()Ljava/nio/channels/SocketChannel;+]Ljava/nio/channels/spi/SelectorProvider;Lsun/nio/ch/PollSelectorProvider;
+HSPLjava/nio/channels/SocketChannel;->validOps()I
 HSPLjava/nio/channels/spi/AbstractInterruptibleChannel$1;-><init>(Ljava/nio/channels/spi/AbstractInterruptibleChannel;)V
 HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;-><init>()V
 HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->begin()V+]Ljava/lang/Thread;missing_types]Lsun/nio/ch/Interruptible;Ljava/nio/channels/spi/AbstractInterruptibleChannel$1;
-HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->blockedOn(Lsun/nio/ch/Interruptible;)V+]Ljava/lang/Thread;missing_types
+HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->blockedOn(Lsun/nio/ch/Interruptible;)V+]Ljava/lang/Thread;megamorphic_types
 HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->close()V+]Ljava/nio/channels/spi/AbstractInterruptibleChannel;missing_types
 HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->end(Z)V
 HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->isOpen()Z
+HSPLjava/nio/channels/spi/AbstractSelectableChannel;-><init>(Ljava/nio/channels/spi/SelectorProvider;)V
+HSPLjava/nio/channels/spi/AbstractSelectableChannel;->addKey(Ljava/nio/channels/SelectionKey;)V
+HSPLjava/nio/channels/spi/AbstractSelectableChannel;->blockingLock()Ljava/lang/Object;
+HSPLjava/nio/channels/spi/AbstractSelectableChannel;->configureBlocking(Z)Ljava/nio/channels/SelectableChannel;+]Ljava/nio/channels/spi/AbstractSelectableChannel;Lsun/nio/ch/DatagramChannelImpl;,Lsun/nio/ch/SocketChannelImpl;
+HSPLjava/nio/channels/spi/AbstractSelectableChannel;->findKey(Ljava/nio/channels/Selector;)Ljava/nio/channels/SelectionKey;+]Ljava/nio/channels/SelectionKey;Lsun/nio/ch/SelectionKeyImpl;
+HSPLjava/nio/channels/spi/AbstractSelectableChannel;->implCloseChannel()V+]Ljava/nio/channels/spi/AbstractSelectableChannel;Lsun/nio/ch/DatagramChannelImpl;,Lsun/nio/ch/SocketChannelImpl;]Ljava/nio/channels/SelectionKey;Lsun/nio/ch/SelectionKeyImpl;
+HSPLjava/nio/channels/spi/AbstractSelectableChannel;->isBlocking()Z
+HSPLjava/nio/channels/spi/AbstractSelectableChannel;->isRegistered()Z
+HSPLjava/nio/channels/spi/AbstractSelectableChannel;->register(Ljava/nio/channels/Selector;ILjava/lang/Object;)Ljava/nio/channels/SelectionKey;+]Ljava/nio/channels/spi/AbstractSelector;Lsun/nio/ch/PollSelectorImpl;]Ljava/nio/channels/spi/AbstractSelectableChannel;Lsun/nio/ch/DatagramChannelImpl;,Lsun/nio/ch/SocketChannelImpl;,Lsun/nio/ch/ServerSocketChannelImpl;
+HSPLjava/nio/channels/spi/AbstractSelectableChannel;->removeKey(Ljava/nio/channels/SelectionKey;)V+]Ljava/nio/channels/spi/AbstractSelectionKey;Lsun/nio/ch/SelectionKeyImpl;
+HSPLjava/nio/channels/spi/AbstractSelectionKey;-><init>()V
+HSPLjava/nio/channels/spi/AbstractSelectionKey;->invalidate()V
+HSPLjava/nio/channels/spi/AbstractSelectionKey;->isValid()Z
+HSPLjava/nio/channels/spi/AbstractSelector$1;-><init>(Ljava/nio/channels/spi/AbstractSelector;)V
+HSPLjava/nio/channels/spi/AbstractSelector;-><init>(Ljava/nio/channels/spi/SelectorProvider;)V
+HSPLjava/nio/channels/spi/AbstractSelector;->begin()V+]Ljava/lang/Thread;missing_types
+HSPLjava/nio/channels/spi/AbstractSelector;->cancelledKeys()Ljava/util/Set;
+HSPLjava/nio/channels/spi/AbstractSelector;->close()V+]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;]Ljava/nio/channels/spi/AbstractSelector;Lsun/nio/ch/PollSelectorImpl;
+HSPLjava/nio/channels/spi/AbstractSelector;->deregister(Ljava/nio/channels/spi/AbstractSelectionKey;)V+]Ljava/nio/channels/spi/AbstractSelectableChannel;Lsun/nio/ch/SocketChannelImpl;,Lsun/nio/ch/DatagramChannelImpl;]Ljava/nio/channels/spi/AbstractSelectionKey;Lsun/nio/ch/SelectionKeyImpl;
+HSPLjava/nio/channels/spi/AbstractSelector;->end()V
+HSPLjava/nio/channels/spi/AbstractSelector;->isOpen()Z+]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;
+HSPLjava/nio/channels/spi/SelectorProvider$1;-><init>()V
+HSPLjava/nio/channels/spi/SelectorProvider$1;->run()Ljava/lang/Object;
+HSPLjava/nio/channels/spi/SelectorProvider$1;->run()Ljava/nio/channels/spi/SelectorProvider;
+HSPLjava/nio/channels/spi/SelectorProvider;-><init>()V
+HSPLjava/nio/channels/spi/SelectorProvider;->access$000()Z
+HSPLjava/nio/channels/spi/SelectorProvider;->access$100()Ljava/nio/channels/spi/SelectorProvider;
+HSPLjava/nio/channels/spi/SelectorProvider;->access$102(Ljava/nio/channels/spi/SelectorProvider;)Ljava/nio/channels/spi/SelectorProvider;
+HSPLjava/nio/channels/spi/SelectorProvider;->access$200()Z
+HSPLjava/nio/channels/spi/SelectorProvider;->loadProviderAsService()Z
+HSPLjava/nio/channels/spi/SelectorProvider;->loadProviderFromProperty()Z
+HSPLjava/nio/channels/spi/SelectorProvider;->provider()Ljava/nio/channels/spi/SelectorProvider;
 HSPLjava/nio/charset/Charset;-><init>(Ljava/lang/String;[Ljava/lang/String;)V
 HSPLjava/nio/charset/Charset;->aliases()Ljava/util/Set;+]Ljava/util/HashSet;Ljava/util/HashSet;
 HSPLjava/nio/charset/Charset;->atBugLevel(Ljava/lang/String;)Z
 HSPLjava/nio/charset/Charset;->cache(Ljava/lang/String;Ljava/nio/charset/Charset;)V
 HSPLjava/nio/charset/Charset;->checkName(Ljava/lang/String;)V
-HSPLjava/nio/charset/Charset;->decode(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;+]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
+HSPLjava/nio/charset/Charset;->decode(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;+]Ljava/nio/charset/CharsetDecoder;missing_types
 HSPLjava/nio/charset/Charset;->defaultCharset()Ljava/nio/charset/Charset;
+HSPLjava/nio/charset/Charset;->encode(Ljava/lang/String;)Ljava/nio/ByteBuffer;+]Ljava/nio/charset/Charset;missing_types
+HSPLjava/nio/charset/Charset;->encode(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;+]Ljava/nio/charset/CharsetEncoder;missing_types
 HSPLjava/nio/charset/Charset;->equals(Ljava/lang/Object;)Z+]Ljava/nio/charset/Charset;missing_types
 HSPLjava/nio/charset/Charset;->forName(Ljava/lang/String;)Ljava/nio/charset/Charset;
 HSPLjava/nio/charset/Charset;->forNameUEE(Ljava/lang/String;)Ljava/nio/charset/Charset;
@@ -3546,8 +3797,8 @@
 HSPLjava/nio/charset/CharsetDecoder;->flush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;+]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;]Ljava/nio/charset/CharsetDecoder;missing_types
 HSPLjava/nio/charset/CharsetDecoder;->malformedInputAction()Ljava/nio/charset/CodingErrorAction;
 HSPLjava/nio/charset/CharsetDecoder;->maxCharsPerByte()F
-HSPLjava/nio/charset/CharsetDecoder;->onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;+]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
-HSPLjava/nio/charset/CharsetDecoder;->onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;+]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
+HSPLjava/nio/charset/CharsetDecoder;->onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;+]Ljava/nio/charset/CharsetDecoder;missing_types
+HSPLjava/nio/charset/CharsetDecoder;->onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;+]Ljava/nio/charset/CharsetDecoder;missing_types
 HSPLjava/nio/charset/CharsetDecoder;->replaceWith(Ljava/lang/String;)Ljava/nio/charset/CharsetDecoder;+]Ljava/nio/charset/CharsetDecoder;missing_types
 HSPLjava/nio/charset/CharsetDecoder;->replacement()Ljava/lang/String;
 HSPLjava/nio/charset/CharsetDecoder;->reset()Ljava/nio/charset/CharsetDecoder;+]Ljava/nio/charset/CharsetDecoder;missing_types
@@ -3555,29 +3806,33 @@
 HSPLjava/nio/charset/CharsetEncoder;-><init>(Ljava/nio/charset/Charset;FF[BZ)V
 HSPLjava/nio/charset/CharsetEncoder;->averageBytesPerChar()F
 HSPLjava/nio/charset/CharsetEncoder;->canEncode(Ljava/lang/CharSequence;)Z
-HSPLjava/nio/charset/CharsetEncoder;->canEncode(Ljava/nio/CharBuffer;)Z+]Ljava/nio/CharBuffer;Ljava/nio/StringCharBuffer;,Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;
+HSPLjava/nio/charset/CharsetEncoder;->canEncode(Ljava/nio/CharBuffer;)Z+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;,Ljava/nio/StringCharBuffer;]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;
 HSPLjava/nio/charset/CharsetEncoder;->charset()Ljava/nio/charset/Charset;
 HSPLjava/nio/charset/CharsetEncoder;->encode(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;+]Ljava/nio/CharBuffer;Ljava/nio/StringCharBuffer;,Ljava/nio/HeapCharBuffer;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetEncoder;missing_types]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;
-HSPLjava/nio/charset/CharsetEncoder;->encode(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;,Ljava/nio/StringCharBuffer;]Ljava/nio/charset/CharsetEncoder;missing_types]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;
+HSPLjava/nio/charset/CharsetEncoder;->encode(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;,Ljava/nio/StringCharBuffer;,Ljava/nio/ByteBufferAsCharBuffer;]Ljava/nio/charset/CharsetEncoder;missing_types]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;
 HSPLjava/nio/charset/CharsetEncoder;->flush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;+]Ljava/nio/charset/CharsetEncoder;missing_types]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;
 HSPLjava/nio/charset/CharsetEncoder;->malformedInputAction()Ljava/nio/charset/CodingErrorAction;
 HSPLjava/nio/charset/CharsetEncoder;->maxBytesPerChar()F
-HSPLjava/nio/charset/CharsetEncoder;->onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;+]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;
-HSPLjava/nio/charset/CharsetEncoder;->onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;+]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;
+HSPLjava/nio/charset/CharsetEncoder;->onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;+]Ljava/nio/charset/CharsetEncoder;missing_types
+HSPLjava/nio/charset/CharsetEncoder;->onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;+]Ljava/nio/charset/CharsetEncoder;missing_types
 HSPLjava/nio/charset/CharsetEncoder;->replacement()[B
 HSPLjava/nio/charset/CharsetEncoder;->reset()Ljava/nio/charset/CharsetEncoder;+]Ljava/nio/charset/CharsetEncoder;missing_types
 HSPLjava/nio/charset/CharsetEncoder;->unmappableCharacterAction()Ljava/nio/charset/CodingErrorAction;
 HSPLjava/nio/charset/CoderResult;->isError()Z
 HSPLjava/nio/charset/CoderResult;->isOverflow()Z
 HSPLjava/nio/charset/CoderResult;->isUnderflow()Z
+HSPLjava/nio/file/AccessMode;->values()[Ljava/nio/file/AccessMode;
+HSPLjava/nio/file/FileAlreadyExistsException;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/nio/file/FileSystemException;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/nio/file/FileSystems;->getDefault()Ljava/nio/file/FileSystem;
 HSPLjava/nio/file/Files$AcceptAllFilter;->accept(Ljava/lang/Object;)Z+]Ljava/nio/file/Files$AcceptAllFilter;Ljava/nio/file/Files$AcceptAllFilter;
 HSPLjava/nio/file/Files$AcceptAllFilter;->accept(Ljava/nio/file/Path;)Z
 HSPLjava/nio/file/Files;->exists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z+]Ljava/nio/file/spi/FileSystemProvider;Lsun/nio/fs/LinuxFileSystemProvider;
 HSPLjava/nio/file/Files;->followLinks([Ljava/nio/file/LinkOption;)Z
+HSPLjava/nio/file/Files;->isAccessible(Ljava/nio/file/Path;[Ljava/nio/file/AccessMode;)Z
 HSPLjava/nio/file/Files;->isRegularFile(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
-HSPLjava/nio/file/Files;->newBufferedReader(Ljava/nio/file/Path;Ljava/nio/charset/Charset;)Ljava/io/BufferedReader;+]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;
+HSPLjava/nio/file/Files;->isWritable(Ljava/nio/file/Path;)Z
+HSPLjava/nio/file/Files;->newBufferedReader(Ljava/nio/file/Path;Ljava/nio/charset/Charset;)Ljava/io/BufferedReader;+]Ljava/nio/charset/Charset;missing_types
 HSPLjava/nio/file/Files;->newByteChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel;+]Ljava/nio/file/spi/FileSystemProvider;Lsun/nio/fs/LinuxFileSystemProvider;
 HSPLjava/nio/file/Files;->newByteChannel(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/nio/channels/SeekableByteChannel;
 HSPLjava/nio/file/Files;->newDirectoryStream(Ljava/nio/file/Path;)Ljava/nio/file/DirectoryStream;+]Ljava/nio/file/spi/FileSystemProvider;Lsun/nio/fs/LinuxFileSystemProvider;
@@ -3602,6 +3857,7 @@
 HSPLjava/security/AlgorithmParametersSpi;-><init>()V
 HSPLjava/security/CodeSigner;-><init>(Ljava/security/cert/CertPath;Ljava/security/Timestamp;)V
 HSPLjava/security/CodeSigner;->getSignerCertPath()Ljava/security/cert/CertPath;
+HSPLjava/security/DigestInputStream;->read([BII)I+]Ljava/io/InputStream;missing_types]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;
 HSPLjava/security/GeneralSecurityException;-><init>(Ljava/lang/String;)V
 HSPLjava/security/KeyFactory;-><init>(Ljava/lang/String;)V+]Ljava/util/List;Lsun/security/jca/ProviderList$ServiceList;
 HSPLjava/security/KeyFactory;->generatePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;+]Ljava/security/KeyFactorySpi;missing_types
@@ -3614,7 +3870,6 @@
 HSPLjava/security/KeyPair;->getPublic()Ljava/security/PublicKey;
 HSPLjava/security/KeyPairGenerator;-><init>(Ljava/lang/String;)V
 HSPLjava/security/KeyPairGenerator;->getInstance(Lsun/security/jca/GetInstance$Instance;Ljava/lang/String;)Ljava/security/KeyPairGenerator;
-HSPLjava/security/KeyPairGenerator;->initialize(Ljava/security/spec/AlgorithmParameterSpec;)V+]Ljava/security/KeyPairGenerator;Lcom/android/org/conscrypt/OpenSSLECKeyPairGenerator;
 HSPLjava/security/KeyPairGeneratorSpi;-><init>()V
 HSPLjava/security/KeyStore$1;-><init>()V
 HSPLjava/security/KeyStore$1;->run()Ljava/lang/Object;
@@ -3622,17 +3877,20 @@
 HSPLjava/security/KeyStore$SecretKeyEntry;-><init>(Ljavax/crypto/SecretKey;)V
 HSPLjava/security/KeyStore$SecretKeyEntry;->getSecretKey()Ljavax/crypto/SecretKey;
 HSPLjava/security/KeyStore;-><init>(Ljava/security/KeyStoreSpi;Ljava/security/Provider;Ljava/lang/String;)V
-HSPLjava/security/KeyStore;->aliases()Ljava/util/Enumeration;
+HSPLjava/security/KeyStore;->aliases()Ljava/util/Enumeration;+]Ljava/security/KeyStoreSpi;Lcom/android/org/conscrypt/TrustedCertificateKeyStoreSpi;
 HSPLjava/security/KeyStore;->containsAlias(Ljava/lang/String;)Z+]Ljava/security/KeyStoreSpi;Landroid/security/keystore2/AndroidKeyStoreSpi;
 HSPLjava/security/KeyStore;->getCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;+]Ljava/security/KeyStoreSpi;missing_types
 HSPLjava/security/KeyStore;->getDefaultType()Ljava/lang/String;
+HSPLjava/security/KeyStore;->getEntry(Ljava/lang/String;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Entry;
 HSPLjava/security/KeyStore;->getInstance(Ljava/lang/String;)Ljava/security/KeyStore;
 HSPLjava/security/KeyStore;->getKey(Ljava/lang/String;[C)Ljava/security/Key;+]Ljava/security/KeyStoreSpi;Landroid/security/keystore2/AndroidKeyStoreSpi;
 HSPLjava/security/KeyStore;->getType()Ljava/lang/String;
-HSPLjava/security/KeyStore;->load(Ljava/io/InputStream;[C)V
+HSPLjava/security/KeyStore;->load(Ljava/io/InputStream;[C)V+]Ljava/security/KeyStoreSpi;Lcom/android/org/conscrypt/TrustedCertificateKeyStoreSpi;
 HSPLjava/security/KeyStore;->load(Ljava/security/KeyStore$LoadStoreParameter;)V+]Ljava/security/KeyStoreSpi;missing_types
-HSPLjava/security/KeyStore;->setCertificateEntry(Ljava/lang/String;Ljava/security/cert/Certificate;)V+]Ljava/security/KeyStoreSpi;Lcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$Std;
+HSPLjava/security/KeyStore;->setCertificateEntry(Ljava/lang/String;Ljava/security/cert/Certificate;)V+]Ljava/security/KeyStoreSpi;Landroid/security/keystore2/AndroidKeyStoreSpi;,Lcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$Std;
+HSPLjava/security/KeyStore;->size()I
 HSPLjava/security/KeyStoreSpi;-><init>()V
+HSPLjava/security/KeyStoreSpi;->engineGetEntry(Ljava/lang/String;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Entry;+]Ljava/security/KeyStoreSpi;Landroid/security/keystore2/AndroidKeyStoreSpi;
 HSPLjava/security/KeyStoreSpi;->engineLoad(Ljava/security/KeyStore$LoadStoreParameter;)V
 HSPLjava/security/MessageDigest$Delegate;-><init>(Ljava/security/MessageDigestSpi;Ljava/lang/String;)V
 HSPLjava/security/MessageDigest$Delegate;->clone()Ljava/lang/Object;+]Ljava/security/MessageDigestSpi;missing_types
@@ -3664,7 +3922,7 @@
 HSPLjava/security/MessageDigest;->update([BII)V+]Ljava/security/MessageDigest;missing_types
 HSPLjava/security/MessageDigestSpi;-><init>()V
 HSPLjava/security/MessageDigestSpi;->engineDigest([BII)I+]Ljava/security/MessageDigestSpi;missing_types
-HSPLjava/security/MessageDigestSpi;->engineUpdate(Ljava/nio/ByteBuffer;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/security/MessageDigestSpi;missing_types
+HSPLjava/security/MessageDigestSpi;->engineUpdate(Ljava/nio/ByteBuffer;)V+]Ljava/security/MessageDigestSpi;missing_types]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLjava/security/NoSuchAlgorithmException;-><init>(Ljava/lang/String;)V
 HSPLjava/security/Provider$EngineDescription;->getConstructorParameterClass()Ljava/lang/Class;
 HSPLjava/security/Provider$Service;-><init>(Ljava/security/Provider;)V
@@ -3679,13 +3937,13 @@
 HSPLjava/security/Provider$Service;->getAlgorithm()Ljava/lang/String;
 HSPLjava/security/Provider$Service;->getAttribute(Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Map;Ljava/util/HashMap;,Ljava/util/Collections$EmptyMap;
 HSPLjava/security/Provider$Service;->getClassName()Ljava/lang/String;
-HSPLjava/security/Provider$Service;->getImplClass()Ljava/lang/Class;+]Ljava/lang/ref/Reference;Ljava/lang/ref/WeakReference;]Ljava/lang/ClassLoader;Ldalvik/system/PathClassLoader;,Ljava/lang/BootClassLoader;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;megamorphic_types]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLjava/security/Provider$Service;->getImplClass()Ljava/lang/Class;+]Ljava/lang/ref/Reference;Ljava/lang/ref/WeakReference;]Ljava/lang/Object;megamorphic_types]Ljava/lang/ClassLoader;missing_types]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/security/Provider$Service;->getKeyClass(Ljava/lang/String;)Ljava/lang/Class;
 HSPLjava/security/Provider$Service;->getProvider()Ljava/security/Provider;
 HSPLjava/security/Provider$Service;->getType()Ljava/lang/String;
-HSPLjava/security/Provider$Service;->hasKeyAttributes()Z+]Ljava/lang/String;Ljava/lang/String;]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLjava/security/Provider$Service;->hasKeyAttributes()Z+]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/String;Ljava/lang/String;]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/util/List;Ljava/util/ArrayList;
 HSPLjava/security/Provider$Service;->isValid()Z
-HSPLjava/security/Provider$Service;->newInstance(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;Ljava/util/HashMap;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;]Ljava/security/Provider$EngineDescription;Ljava/security/Provider$EngineDescription;]Ljava/lang/Object;Ljava/security/cert/CollectionCertStoreParameters;]Ljava/security/Provider;megamorphic_types
+HSPLjava/security/Provider$Service;->newInstance(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/security/Provider;megamorphic_types]Ljava/util/Map;Ljava/util/HashMap;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;]Ljava/security/Provider$EngineDescription;Ljava/security/Provider$EngineDescription;]Ljava/lang/Object;Ljava/security/cert/CollectionCertStoreParameters;
 HSPLjava/security/Provider$Service;->supportsKeyClass(Ljava/security/Key;)Z+]Ljava/lang/Object;missing_types]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/security/Provider$Service;->supportsKeyFormat(Ljava/security/Key;)Z+]Ljava/security/Key;missing_types
 HSPLjava/security/Provider$Service;->supportsParameter(Ljava/lang/Object;)Z+]Ljava/util/Map;Ljava/util/HashMap;
@@ -3728,7 +3986,7 @@
 HSPLjava/security/Security;->addProvider(Ljava/security/Provider;)I
 HSPLjava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Object;+]Lsun/security/jca/GetInstance$Instance;Lsun/security/jca/GetInstance$Instance;
 HSPLjava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;)[Ljava/lang/Object;
-HSPLjava/security/Security;->getProperty(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Properties;Ljava/util/Properties;
+HSPLjava/security/Security;->getProperty(Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Properties;Ljava/util/Properties;]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/security/Security;->getProvider(Ljava/lang/String;)Ljava/security/Provider;+]Lsun/security/jca/ProviderList;Lsun/security/jca/ProviderList;
 HSPLjava/security/Security;->getProviders()[Ljava/security/Provider;+]Lsun/security/jca/ProviderList;Lsun/security/jca/ProviderList;
 HSPLjava/security/Security;->getSpiClass(Ljava/lang/String;)Ljava/lang/Class;+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
@@ -3740,30 +3998,34 @@
 HSPLjava/security/Signature$Delegate;-><init>(Ljava/lang/String;)V
 HSPLjava/security/Signature$Delegate;->chooseFirstProvider()V
 HSPLjava/security/Signature$Delegate;->chooseProvider(ILjava/security/Key;Ljava/security/SecureRandom;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/util/List;Lsun/security/jca/ProviderList$ServiceList;]Ljava/util/Iterator;Lsun/security/jca/ProviderList$ServiceList$1;
+HSPLjava/security/Signature$Delegate;->engineInitSign(Ljava/security/PrivateKey;)V
 HSPLjava/security/Signature$Delegate;->engineInitVerify(Ljava/security/PublicKey;)V
+HSPLjava/security/Signature$Delegate;->engineSign()[B
 HSPLjava/security/Signature$Delegate;->engineUpdate(Ljava/nio/ByteBuffer;)V+]Ljava/security/SignatureSpi;Lcom/android/org/conscrypt/OpenSSLSignature$SHA256RSA;,Lcom/android/org/conscrypt/OpenSSLSignature$SHA512RSA;,Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsa256;]Ljava/security/Signature$Delegate;Ljava/security/Signature$Delegate;
 HSPLjava/security/Signature$Delegate;->engineUpdate([BII)V+]Ljava/security/Signature$Delegate;Ljava/security/Signature$Delegate;]Ljava/security/SignatureSpi;missing_types
-HSPLjava/security/Signature$Delegate;->engineVerify([B)Z+]Ljava/security/SignatureSpi;missing_types]Ljava/security/Signature$Delegate;Ljava/security/Signature$Delegate;
+HSPLjava/security/Signature$Delegate;->engineVerify([B)Z+]Ljava/security/Signature$Delegate;Ljava/security/Signature$Delegate;]Ljava/security/SignatureSpi;missing_types
 HSPLjava/security/Signature$Delegate;->init(Ljava/security/SignatureSpi;ILjava/security/Key;Ljava/security/SecureRandom;)V+]Ljava/security/SignatureSpi;megamorphic_types
 HSPLjava/security/Signature$Delegate;->newInstance(Ljava/security/Provider$Service;)Ljava/security/SignatureSpi;+]Ljava/security/Provider$Service;Ljava/security/Provider$Service;
 HSPLjava/security/Signature;-><init>(Ljava/lang/String;)V
 HSPLjava/security/Signature;->access$000(Ljava/security/Signature;)Ljava/lang/String;
 HSPLjava/security/Signature;->access$200(Ljava/security/Provider$Service;)Z
 HSPLjava/security/Signature;->getInstance(Ljava/lang/String;)Ljava/security/Signature;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Lsun/security/jca/ProviderList$ServiceList;]Ljava/util/Iterator;Lsun/security/jca/ProviderList$ServiceList$1;
+HSPLjava/security/Signature;->initSign(Ljava/security/PrivateKey;)V
 HSPLjava/security/Signature;->initVerify(Ljava/security/PublicKey;)V+]Ljava/security/Signature;Ljava/security/Signature$Delegate;
 HSPLjava/security/Signature;->isSpi(Ljava/security/Provider$Service;)Z+]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
+HSPLjava/security/Signature;->sign()[B
 HSPLjava/security/Signature;->update(Ljava/nio/ByteBuffer;)V+]Ljava/security/Signature;Ljava/security/Signature$Delegate;
 HSPLjava/security/Signature;->update([B)V+]Ljava/security/Signature;Ljava/security/Signature$Delegate;
 HSPLjava/security/Signature;->update([BII)V+]Ljava/security/Signature;Ljava/security/Signature$Delegate;
 HSPLjava/security/Signature;->verify([B)Z+]Ljava/security/Signature;Ljava/security/Signature$Delegate;
 HSPLjava/security/SignatureSpi;-><init>()V
-HSPLjava/security/SignatureSpi;->engineUpdate(Ljava/nio/ByteBuffer;)V+]Ljava/security/SignatureSpi;missing_types]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;
+HSPLjava/security/SignatureSpi;->engineUpdate(Ljava/nio/ByteBuffer;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/security/SignatureSpi;megamorphic_types
 HSPLjava/security/cert/CertPath;-><init>(Ljava/lang/String;)V
 HSPLjava/security/cert/CertPath;->getType()Ljava/lang/String;
 HSPLjava/security/cert/CertPathValidator;-><init>(Ljava/security/cert/CertPathValidatorSpi;Ljava/security/Provider;Ljava/lang/String;)V
 HSPLjava/security/cert/CertPathValidator;->getInstance(Ljava/lang/String;)Ljava/security/cert/CertPathValidator;
 HSPLjava/security/cert/CertPathValidator;->getRevocationChecker()Ljava/security/cert/CertPathChecker;
-HSPLjava/security/cert/CertPathValidator;->validate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult;+]Ljava/security/cert/CertPathValidatorSpi;Lsun/security/provider/certpath/PKIXCertPathValidator;
+HSPLjava/security/cert/CertPathValidator;->validate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult;+]Ljava/security/cert/CertPathValidatorSpi;Lsun/security/provider/certpath/PKIXCertPathValidator;,Lcom/android/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi;
 HSPLjava/security/cert/CertPathValidatorSpi;-><init>()V
 HSPLjava/security/cert/CertStore;-><init>(Ljava/security/cert/CertStoreSpi;Ljava/security/Provider;Ljava/lang/String;Ljava/security/cert/CertStoreParameters;)V
 HSPLjava/security/cert/CertStore;->getInstance(Ljava/lang/String;Ljava/security/cert/CertStoreParameters;)Ljava/security/cert/CertStore;
@@ -3798,19 +4060,18 @@
 HSPLjava/security/cert/PKIXParameters;->isPolicyMappingInhibited()Z
 HSPLjava/security/cert/PKIXParameters;->isRevocationEnabled()Z
 HSPLjava/security/cert/PKIXParameters;->setCertPathCheckers(Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/security/cert/PKIXCertPathChecker;Lsun/security/provider/certpath/RevocationChecker;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
-HSPLjava/security/cert/PKIXParameters;->setDate(Ljava/util/Date;)V
 HSPLjava/security/cert/PKIXParameters;->setRevocationEnabled(Z)V
 HSPLjava/security/cert/PKIXParameters;->setTrustAnchors(Ljava/util/Set;)V+]Ljava/util/Iterator;missing_types]Ljava/util/Set;missing_types
 HSPLjava/security/cert/PKIXRevocationChecker;-><init>()V
-HSPLjava/security/cert/PKIXRevocationChecker;->clone()Ljava/security/cert/PKIXRevocationChecker;+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
+HSPLjava/security/cert/PKIXRevocationChecker;->clone()Ljava/security/cert/PKIXRevocationChecker;+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;][B[B]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
 HSPLjava/security/cert/PKIXRevocationChecker;->getOcspExtensions()Ljava/util/List;
 HSPLjava/security/cert/PKIXRevocationChecker;->getOcspResponder()Ljava/net/URI;
 HSPLjava/security/cert/PKIXRevocationChecker;->getOcspResponderCert()Ljava/security/cert/X509Certificate;
-HSPLjava/security/cert/PKIXRevocationChecker;->getOcspResponses()Ljava/util/Map;+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
+HSPLjava/security/cert/PKIXRevocationChecker;->getOcspResponses()Ljava/util/Map;+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;][B[B]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
 HSPLjava/security/cert/PKIXRevocationChecker;->getOptions()Ljava/util/Set;
-HSPLjava/security/cert/PKIXRevocationChecker;->setOcspResponses(Ljava/util/Map;)V+]Ljava/util/Map$Entry;Ljava/util/AbstractMap$SimpleImmutableEntry;]Ljava/util/Map;Ljava/util/HashMap;,Ljava/util/Collections$SingletonMap;]Ljava/util/Iterator;Ljava/util/Collections$1;]Ljava/util/Set;Ljava/util/Collections$SingletonSet;
+HSPLjava/security/cert/PKIXRevocationChecker;->setOcspResponses(Ljava/util/Map;)V+]Ljava/util/Map$Entry;Ljava/util/AbstractMap$SimpleImmutableEntry;][B[B]Ljava/util/Map;Ljava/util/HashMap;,Ljava/util/Collections$SingletonMap;]Ljava/util/Iterator;Ljava/util/Collections$1;]Ljava/util/Set;Ljava/util/Collections$SingletonSet;
 HSPLjava/security/cert/PKIXRevocationChecker;->setOptions(Ljava/util/Set;)V
-HSPLjava/security/cert/PolicyQualifierInfo;-><init>([B)V+]Lsun/security/util/ObjectIdentifier;Lsun/security/util/ObjectIdentifier;]Lsun/security/util/DerValue;Lsun/security/util/DerValue;]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream;
+HSPLjava/security/cert/PolicyQualifierInfo;-><init>([B)V+]Lsun/security/util/ObjectIdentifier;Lsun/security/util/ObjectIdentifier;]Lsun/security/util/DerValue;Lsun/security/util/DerValue;][B[B]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream;
 HSPLjava/security/cert/TrustAnchor;-><init>(Ljava/security/cert/X509Certificate;[B)V
 HSPLjava/security/cert/TrustAnchor;->getNameConstraints()[B
 HSPLjava/security/cert/TrustAnchor;->getTrustedCert()Ljava/security/cert/X509Certificate;
@@ -3848,8 +4109,8 @@
 HSPLjava/security/spec/EllipticCurve;-><init>(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V
 HSPLjava/security/spec/EllipticCurve;->checkValidity(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/lang/String;)V+]Ljava/math/BigInteger;Ljava/math/BigInteger;]Ljava/security/spec/ECFieldFp;Ljava/security/spec/ECFieldFp;
 HSPLjava/security/spec/EllipticCurve;->getField()Ljava/security/spec/ECField;
-HSPLjava/security/spec/EncodedKeySpec;-><init>([B)V
-HSPLjava/security/spec/EncodedKeySpec;->getEncoded()[B
+HSPLjava/security/spec/EncodedKeySpec;-><init>([B)V+][B[B
+HSPLjava/security/spec/EncodedKeySpec;->getEncoded()[B+][B[B
 HSPLjava/security/spec/PKCS8EncodedKeySpec;-><init>([B)V
 HSPLjava/security/spec/PKCS8EncodedKeySpec;->getEncoded()[B
 HSPLjava/security/spec/X509EncodedKeySpec;-><init>([B)V
@@ -3861,22 +4122,26 @@
 HSPLjava/text/CalendarBuilder;->establish(Ljava/util/Calendar;)Ljava/util/Calendar;+]Ljava/text/CalendarBuilder;Ljava/text/CalendarBuilder;]Ljava/util/Calendar;Ljava/util/GregorianCalendar;
 HSPLjava/text/CalendarBuilder;->isSet(I)Z
 HSPLjava/text/CalendarBuilder;->set(II)Ljava/text/CalendarBuilder;
+HSPLjava/text/CollationKey;-><init>(Ljava/lang/String;)V
 HSPLjava/text/Collator;-><init>(Landroid/icu/text/Collator;)V
 HSPLjava/text/Collator;->decompositionMode_Java_ICU(I)I
 HSPLjava/text/Collator;->getInstance()Ljava/text/Collator;
 HSPLjava/text/Collator;->getInstance(Ljava/util/Locale;)Ljava/text/Collator;
-HSPLjava/text/Collator;->setDecomposition(I)V+]Landroid/icu/text/Collator;Landroid/icu/text/RuleBasedCollator;
-HSPLjava/text/Collator;->setStrength(I)V+]Landroid/icu/text/Collator;Landroid/icu/text/RuleBasedCollator;
+HSPLjava/text/Collator;->setDecomposition(I)V+]Landroid/icu/text/Collator;missing_types
+HSPLjava/text/Collator;->setStrength(I)V+]Landroid/icu/text/Collator;missing_types
 HSPLjava/text/DateFormat;-><init>()V
 HSPLjava/text/DateFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;+]Ljava/lang/Number;Ljava/lang/Long;,Ljava/lang/Integer;]Ljava/text/DateFormat;Ljava/text/SimpleDateFormat;
 HSPLjava/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/text/DateFormat;missing_types
 HSPLjava/text/DateFormat;->get(IIILjava/util/Locale;)Ljava/text/DateFormat;
+HSPLjava/text/DateFormat;->getDateInstance(ILjava/util/Locale;)Ljava/text/DateFormat;
 HSPLjava/text/DateFormat;->getDateTimeInstance()Ljava/text/DateFormat;
+HSPLjava/text/DateFormat;->getDateTimeInstance(II)Ljava/text/DateFormat;
 HSPLjava/text/DateFormat;->getDateTimeInstance(IILjava/util/Locale;)Ljava/text/DateFormat;
 HSPLjava/text/DateFormat;->getTimeInstance(ILjava/util/Locale;)Ljava/text/DateFormat;
 HSPLjava/text/DateFormat;->getTimeZone()Ljava/util/TimeZone;+]Ljava/util/Calendar;Ljava/util/GregorianCalendar;
-HSPLjava/text/DateFormat;->parse(Ljava/lang/String;)Ljava/util/Date;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/text/DateFormat;missing_types
+HSPLjava/text/DateFormat;->parse(Ljava/lang/String;)Ljava/util/Date;+]Ljava/text/DateFormat;missing_types]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/text/DateFormat;->set24HourTimePref(Ljava/lang/Boolean;)V
+HSPLjava/text/DateFormat;->setCalendar(Ljava/util/Calendar;)V
 HSPLjava/text/DateFormat;->setLenient(Z)V+]Ljava/util/Calendar;Ljava/util/GregorianCalendar;
 HSPLjava/text/DateFormat;->setTimeZone(Ljava/util/TimeZone;)V+]Ljava/util/Calendar;Ljava/util/GregorianCalendar;
 HSPLjava/text/DateFormatSymbols;-><init>(Ljava/util/Locale;)V
@@ -3894,11 +4159,12 @@
 HSPLjava/text/DateFormatSymbols;->initializeSupplementaryData(Llibcore/icu/LocaleData;)V
 HSPLjava/text/DecimalFormat;-><init>(Ljava/lang/String;)V
 HSPLjava/text/DecimalFormat;-><init>(Ljava/lang/String;Ljava/text/DecimalFormatSymbols;)V+]Ljava/text/DecimalFormatSymbols;Ljava/text/DecimalFormatSymbols;
-HSPLjava/text/DecimalFormat;->clone()Ljava/lang/Object;+]Ljava/text/DecimalFormatSymbols;Ljava/text/DecimalFormatSymbols;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
+HSPLjava/text/DecimalFormat;->clone()Ljava/lang/Object;+]Ljava/text/DecimalFormatSymbols;Ljava/text/DecimalFormatSymbols;]Landroid/icu/text/DecimalFormat;missing_types
 HSPLjava/text/DecimalFormat;->equals(Ljava/lang/Object;)Z
-HSPLjava/text/DecimalFormat;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;+]Ljava/text/FieldPosition;Ljava/text/DontCareFieldPosition;,Ljava/text/FieldPosition;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
-HSPLjava/text/DecimalFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;+]Ljava/text/FieldPosition;Ljava/text/FieldPosition;,Ljava/text/DontCareFieldPosition;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
-HSPLjava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;+]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
+HSPLjava/text/DecimalFormat;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;+]Ljava/text/FieldPosition;Ljava/text/DontCareFieldPosition;,Ljava/text/FieldPosition;]Landroid/icu/text/DecimalFormat;missing_types
+HSPLjava/text/DecimalFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;+]Ljava/text/FieldPosition;Ljava/text/DontCareFieldPosition;,Ljava/text/FieldPosition;]Landroid/icu/text/DecimalFormat;missing_types
+HSPLjava/text/DecimalFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;+]Ljava/lang/Number;Ljava/lang/Float;,Ljava/lang/Double;,Ljava/lang/Integer;,Ljava/lang/Long;]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;
+HSPLjava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;+]Landroid/icu/text/DecimalFormat;missing_types
 HSPLjava/text/DecimalFormat;->getIcuFieldPosition(Ljava/text/FieldPosition;)Ljava/text/FieldPosition;+]Ljava/text/FieldPosition;Ljava/text/FieldPosition;,Ljava/text/DontCareFieldPosition;
 HSPLjava/text/DecimalFormat;->getMaximumFractionDigits()I
 HSPLjava/text/DecimalFormat;->getMaximumIntegerDigits()I
@@ -3909,18 +4175,18 @@
 HSPLjava/text/DecimalFormat;->getPositivePrefix()Ljava/lang/String;+]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
 HSPLjava/text/DecimalFormat;->getPositiveSuffix()Ljava/lang/String;+]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
 HSPLjava/text/DecimalFormat;->initPattern(Ljava/lang/String;)V+]Ljava/text/DecimalFormatSymbols;Ljava/text/DecimalFormatSymbols;
-HSPLjava/text/DecimalFormat;->isParseBigDecimal()Z+]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
-HSPLjava/text/DecimalFormat;->isParseIntegerOnly()Z+]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
-HSPLjava/text/DecimalFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;+]Ljava/lang/Object;Ljava/lang/Long;]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;]Ljava/lang/Number;Landroid/icu/math/BigDecimal;
-HSPLjava/text/DecimalFormat;->setDecimalSeparatorAlwaysShown(Z)V
+HSPLjava/text/DecimalFormat;->isParseBigDecimal()Z+]Landroid/icu/text/DecimalFormat;missing_types
+HSPLjava/text/DecimalFormat;->isParseIntegerOnly()Z+]Landroid/icu/text/DecimalFormat;missing_types
+HSPLjava/text/DecimalFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;+]Ljava/lang/Object;Ljava/lang/Long;]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;]Landroid/icu/text/DecimalFormat;missing_types]Ljava/lang/Number;Landroid/icu/math/BigDecimal;
+HSPLjava/text/DecimalFormat;->setDecimalSeparatorAlwaysShown(Z)V+]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
 HSPLjava/text/DecimalFormat;->setGroupingUsed(Z)V+]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
 HSPLjava/text/DecimalFormat;->setMaximumFractionDigits(I)V+]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
-HSPLjava/text/DecimalFormat;->setMaximumIntegerDigits(I)V+]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
+HSPLjava/text/DecimalFormat;->setMaximumIntegerDigits(I)V+]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;]Landroid/icu/text/DecimalFormat;missing_types
 HSPLjava/text/DecimalFormat;->setMinimumFractionDigits(I)V+]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
-HSPLjava/text/DecimalFormat;->setMinimumIntegerDigits(I)V+]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
-HSPLjava/text/DecimalFormat;->setParseIntegerOnly(Z)V
+HSPLjava/text/DecimalFormat;->setMinimumIntegerDigits(I)V+]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;]Landroid/icu/text/DecimalFormat;missing_types
+HSPLjava/text/DecimalFormat;->setParseIntegerOnly(Z)V+]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
 HSPLjava/text/DecimalFormat;->toPattern()Ljava/lang/String;+]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
-HSPLjava/text/DecimalFormat;->updateFieldsFromIcu()V+]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat;
+HSPLjava/text/DecimalFormat;->updateFieldsFromIcu()V+]Landroid/icu/text/DecimalFormat;missing_types
 HSPLjava/text/DecimalFormatSymbols;-><init>(Ljava/util/Locale;)V
 HSPLjava/text/DecimalFormatSymbols;->clone()Ljava/lang/Object;
 HSPLjava/text/DecimalFormatSymbols;->fromIcuInstance(Landroid/icu/text/DecimalFormatSymbols;)Ljava/text/DecimalFormatSymbols;+]Ljava/text/DecimalFormatSymbols;Ljava/text/DecimalFormatSymbols;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/util/Currency;Landroid/icu/util/Currency;
@@ -3967,17 +4233,20 @@
 HSPLjava/text/Format;->clone()Ljava/lang/Object;
 HSPLjava/text/Format;->format(Ljava/lang/Object;)Ljava/lang/String;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/text/Format;megamorphic_types
 HSPLjava/text/IcuIteratorWrapper;-><init>(Landroid/icu/text/BreakIterator;)V
+HSPLjava/text/IcuIteratorWrapper;->checkOffset(ILjava/text/CharacterIterator;)V+]Ljava/text/CharacterIterator;Ljava/text/StringCharacterIterator;
+HSPLjava/text/IcuIteratorWrapper;->getText()Ljava/text/CharacterIterator;+]Landroid/icu/text/BreakIterator;Landroid/icu/text/RuleBasedBreakIterator;
 HSPLjava/text/IcuIteratorWrapper;->next()I+]Landroid/icu/text/BreakIterator;missing_types
-HSPLjava/text/IcuIteratorWrapper;->setText(Ljava/lang/String;)V+]Landroid/icu/text/BreakIterator;Landroid/icu/text/RuleBasedBreakIterator;
+HSPLjava/text/IcuIteratorWrapper;->preceding(I)I+]Landroid/icu/text/BreakIterator;Landroid/icu/text/RuleBasedBreakIterator;]Ljava/text/IcuIteratorWrapper;Ljava/text/IcuIteratorWrapper;
+HSPLjava/text/IcuIteratorWrapper;->setText(Ljava/lang/String;)V+]Landroid/icu/text/BreakIterator;missing_types
 HSPLjava/text/MessageFormat;-><init>(Ljava/lang/String;)V+]Ljava/text/MessageFormat;Ljava/text/MessageFormat;
 HSPLjava/text/MessageFormat;->applyPattern(Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/text/MessageFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
 HSPLjava/text/MessageFormat;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;+]Ljava/text/MessageFormat;Ljava/text/MessageFormat;
 HSPLjava/text/MessageFormat;->makeFormat(II[Ljava/lang/StringBuilder;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLjava/text/MessageFormat;->subformat([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/text/FieldPosition;Ljava/text/FieldPosition;]Ljava/text/MessageFormat$Field;Ljava/text/MessageFormat$Field;]Ljava/text/Format;Ljava/text/DecimalFormat;]Ljava/lang/Object;missing_types
+HSPLjava/text/MessageFormat;->subformat([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/text/FieldPosition;Ljava/text/FieldPosition;]Ljava/text/MessageFormat$Field;Ljava/text/MessageFormat$Field;]Ljava/text/Format;Ljava/text/DecimalFormat;,Ljava/text/ChoiceFormat;]Ljava/lang/Object;missing_types
 HSPLjava/text/Normalizer$Form$$ExternalSyntheticLambda3;->get()Ljava/lang/Object;
 HSPLjava/text/Normalizer$Form;->access$000(Ljava/text/Normalizer$Form;)Ljava/util/function/Supplier;
-HSPLjava/text/Normalizer;->normalize(Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Ljava/lang/String;+]Ljava/util/function/Supplier;Ljava/text/Normalizer$Form$$ExternalSyntheticLambda3;]Landroid/icu/text/Normalizer2;Landroid/icu/impl/Norm2AllModes$DecomposeNormalizer2;
+HSPLjava/text/Normalizer;->normalize(Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Ljava/lang/String;+]Ljava/util/function/Supplier;Ljava/text/Normalizer$Form$$ExternalSyntheticLambda3;,Ljava/text/Normalizer$Form$$ExternalSyntheticLambda2;]Landroid/icu/text/Normalizer2;Landroid/icu/impl/Norm2AllModes$DecomposeNormalizer2;,Landroid/icu/impl/Norm2AllModes$ComposeNormalizer2;
 HSPLjava/text/NumberFormat;-><init>()V
 HSPLjava/text/NumberFormat;->clone()Ljava/lang/Object;
 HSPLjava/text/NumberFormat;->format(D)Ljava/lang/String;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/text/NumberFormat;Ljava/text/DecimalFormat;
@@ -3999,7 +4268,8 @@
 HSPLjava/text/ParsePosition;->getIndex()I
 HSPLjava/text/ParsePosition;->setIndex(I)V
 HSPLjava/text/RuleBasedCollator;-><init>(Landroid/icu/text/RuleBasedCollator;)V
-HSPLjava/text/RuleBasedCollator;->compare(Ljava/lang/String;Ljava/lang/String;)I+]Landroid/icu/text/Collator;Landroid/icu/text/RuleBasedCollator;
+HSPLjava/text/RuleBasedCollator;->compare(Ljava/lang/String;Ljava/lang/String;)I+]Landroid/icu/text/Collator;missing_types
+HSPLjava/text/RuleBasedCollator;->getCollationKey(Ljava/lang/String;)Ljava/text/CollationKey;+]Landroid/icu/text/Collator;Landroid/icu/text/RuleBasedCollator;
 HSPLjava/text/SimpleDateFormat;-><init>()V
 HSPLjava/text/SimpleDateFormat;-><init>(IILjava/util/Locale;)V
 HSPLjava/text/SimpleDateFormat;-><init>(Ljava/lang/String;)V
@@ -4013,7 +4283,7 @@
 HSPLjava/text/SimpleDateFormat;->formatWeekday(IIZZ)Ljava/lang/String;+]Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols;
 HSPLjava/text/SimpleDateFormat;->getDateTimeFormat(IILjava/util/Locale;)Ljava/lang/String;+]Llibcore/icu/LocaleData;Llibcore/icu/LocaleData;
 HSPLjava/text/SimpleDateFormat;->getExtendedTimeZoneNames()Lcom/android/icu/text/ExtendedTimeZoneNames;
-HSPLjava/text/SimpleDateFormat;->getTimeZoneNames()Landroid/icu/text/TimeZoneNames;+]Lcom/android/icu/text/ExtendedTimeZoneNames;Lcom/android/icu/text/ExtendedTimeZoneNames;
+HSPLjava/text/SimpleDateFormat;->getTimeZoneNames()Landroid/icu/text/TimeZoneNames;+]Lcom/android/icu/text/ExtendedTimeZoneNames;missing_types
 HSPLjava/text/SimpleDateFormat;->initialize(Ljava/util/Locale;)V+]Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentHashMap;]Ljava/text/NumberFormat;Ljava/text/DecimalFormat;
 HSPLjava/text/SimpleDateFormat;->initializeCalendar(Ljava/util/Locale;)V
 HSPLjava/text/SimpleDateFormat;->initializeDefaultCentury()V+]Ljava/util/Calendar;Ljava/util/GregorianCalendar;
@@ -4024,8 +4294,8 @@
 HSPLjava/text/SimpleDateFormat;->parseInternal(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;+]Ljava/text/CalendarBuilder;Ljava/text/CalendarBuilder;]Ljava/util/Calendar;Ljava/util/GregorianCalendar;
 HSPLjava/text/SimpleDateFormat;->parseMonth(Ljava/lang/String;IIIILjava/text/ParsePosition;ZZLjava/text/CalendarBuilder;)I+]Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols;]Ljava/text/CalendarBuilder;Ljava/text/CalendarBuilder;
 HSPLjava/text/SimpleDateFormat;->parseWeekday(Ljava/lang/String;IIZZLjava/text/CalendarBuilder;)I+]Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols;
-HSPLjava/text/SimpleDateFormat;->subFormat(IILjava/text/Format$FieldDelegate;Ljava/lang/StringBuffer;Z)V+]Ljava/text/Format$FieldDelegate;Ljava/text/DontCareFieldPosition$1;,Ljava/text/FieldPosition$Delegate;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/Calendar;Ljava/util/GregorianCalendar;]Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols;]Landroid/icu/text/TimeZoneNames;Landroid/icu/impl/TimeZoneNamesImpl;]Ljava/util/TimeZone;Llibcore/util/ZoneInfo;,Ljava/util/SimpleTimeZone;
-HSPLjava/text/SimpleDateFormat;->subParse(Ljava/lang/String;IIIZ[ZLjava/text/ParsePosition;ZLjava/text/CalendarBuilder;)I+]Ljava/lang/String;Ljava/lang/String;]Ljava/text/ParsePosition;Ljava/text/ParsePosition;]Ljava/text/CalendarBuilder;Ljava/text/CalendarBuilder;]Ljava/lang/Number;Ljava/lang/Long;]Ljava/text/NumberFormat;Ljava/text/DecimalFormat;]Ljava/text/SimpleDateFormat;Ljava/text/SimpleDateFormat;]Ljava/util/Calendar;Ljava/util/GregorianCalendar;]Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols;
+HSPLjava/text/SimpleDateFormat;->subFormat(IILjava/text/Format$FieldDelegate;Ljava/lang/StringBuffer;Z)V+]Ljava/text/Format$FieldDelegate;Ljava/text/DontCareFieldPosition$1;,Ljava/text/FieldPosition$Delegate;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/Calendar;Ljava/util/GregorianCalendar;]Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols;]Landroid/icu/text/TimeZoneNames;missing_types]Ljava/util/TimeZone;missing_types
+HSPLjava/text/SimpleDateFormat;->subParse(Ljava/lang/String;IIIZ[ZLjava/text/ParsePosition;ZLjava/text/CalendarBuilder;)I+]Ljava/lang/String;Ljava/lang/String;]Ljava/text/ParsePosition;Ljava/text/ParsePosition;]Ljava/text/CalendarBuilder;Ljava/text/CalendarBuilder;]Ljava/lang/Number;Ljava/lang/Long;]Ljava/text/NumberFormat;Ljava/text/DecimalFormat;]Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols;]Ljava/text/SimpleDateFormat;Ljava/text/SimpleDateFormat;]Ljava/util/Calendar;Ljava/util/GregorianCalendar;
 HSPLjava/text/SimpleDateFormat;->subParseNumericZone(Ljava/lang/String;IIIZLjava/text/CalendarBuilder;)I+]Ljava/text/CalendarBuilder;Ljava/text/CalendarBuilder;
 HSPLjava/text/SimpleDateFormat;->toPattern()Ljava/lang/String;
 HSPLjava/text/SimpleDateFormat;->useDateFormatSymbols()Z+]Ljava/lang/Object;Ljava/util/GregorianCalendar;]Ljava/lang/Class;Ljava/lang/Class;
@@ -4051,13 +4321,12 @@
 HSPLjava/time/DayOfWeek;->getValue()I+]Ljava/time/DayOfWeek;Ljava/time/DayOfWeek;
 HSPLjava/time/DayOfWeek;->of(I)Ljava/time/DayOfWeek;
 HSPLjava/time/DayOfWeek;->plus(J)Ljava/time/DayOfWeek;
-HSPLjava/time/Duration;->between(Ljava/time/temporal/Temporal;Ljava/time/temporal/Temporal;)Ljava/time/Duration;+]Ljava/time/temporal/Temporal;Ljava/time/Instant;
+HSPLjava/time/Duration;-><init>(JI)V
 HSPLjava/time/Duration;->compareTo(Ljava/time/Duration;)I
+HSPLjava/time/Duration;->create(JI)Ljava/time/Duration;
 HSPLjava/time/Duration;->getSeconds()J
 HSPLjava/time/Duration;->ofDays(J)Ljava/time/Duration;
-HSPLjava/time/Duration;->ofHours(J)Ljava/time/Duration;
 HSPLjava/time/Duration;->ofMinutes(J)Ljava/time/Duration;
-HSPLjava/time/Duration;->ofNanos(J)Ljava/time/Duration;
 HSPLjava/time/Duration;->toMillis()J
 HSPLjava/time/Duration;->toNanos()J
 HSPLjava/time/Instant;-><init>(JI)V
@@ -4070,7 +4339,6 @@
 HSPLjava/time/Instant;->getLong(Ljava/time/temporal/TemporalField;)J+]Ljava/time/temporal/ChronoField;Ljava/time/temporal/ChronoField;
 HSPLjava/time/Instant;->getNano()I
 HSPLjava/time/Instant;->isAfter(Ljava/time/Instant;)Z+]Ljava/time/Instant;Ljava/time/Instant;
-HSPLjava/time/Instant;->isBefore(Ljava/time/Instant;)Z+]Ljava/time/Instant;Ljava/time/Instant;
 HSPLjava/time/Instant;->isSupported(Ljava/time/temporal/TemporalField;)Z
 HSPLjava/time/Instant;->minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/Instant;+]Ljava/time/Instant;Ljava/time/Instant;
 HSPLjava/time/Instant;->nanosUntil(Ljava/time/Instant;)J
@@ -4128,7 +4396,6 @@
 HSPLjava/time/LocalDateTime;->isBefore(Ljava/time/chrono/ChronoLocalDateTime;)Z
 HSPLjava/time/LocalDateTime;->isSupported(Ljava/time/temporal/TemporalField;)Z+]Ljava/time/temporal/ChronoField;Ljava/time/temporal/ChronoField;
 HSPLjava/time/LocalDateTime;->now()Ljava/time/LocalDateTime;
-HSPLjava/time/LocalDateTime;->now(Ljava/time/Clock;)Ljava/time/LocalDateTime;+]Ljava/time/Clock;Ljava/time/Clock$SystemClock;]Ljava/time/Instant;Ljava/time/Instant;]Ljava/time/ZoneId;Ljava/time/ZoneRegion;]Ljava/time/zone/ZoneRules;Ljava/time/zone/ZoneRules;
 HSPLjava/time/LocalDateTime;->of(Ljava/time/LocalDate;Ljava/time/LocalTime;)Ljava/time/LocalDateTime;
 HSPLjava/time/LocalDateTime;->ofEpochSecond(JILjava/time/ZoneOffset;)Ljava/time/LocalDateTime;+]Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;]Ljava/time/temporal/ChronoField;Ljava/time/temporal/ChronoField;
 HSPLjava/time/LocalDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/LocalDateTime;+]Ljava/time/Instant;Ljava/time/Instant;]Ljava/time/ZoneId;Ljava/time/ZoneRegion;]Ljava/time/zone/ZoneRules;Ljava/time/zone/ZoneRules;
@@ -4175,10 +4442,10 @@
 HSPLjava/time/ZoneId;->of(Ljava/lang/String;)Ljava/time/ZoneId;
 HSPLjava/time/ZoneId;->of(Ljava/lang/String;Ljava/util/Map;)Ljava/time/ZoneId;+]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
 HSPLjava/time/ZoneId;->of(Ljava/lang/String;Z)Ljava/time/ZoneId;+]Ljava/lang/String;Ljava/lang/String;
-HSPLjava/time/ZoneId;->systemDefault()Ljava/time/ZoneId;+]Ljava/util/TimeZone;Llibcore/util/ZoneInfo;
+HSPLjava/time/ZoneId;->systemDefault()Ljava/time/ZoneId;+]Ljava/util/TimeZone;missing_types
 HSPLjava/time/ZoneId;->toString()Ljava/lang/String;+]Ljava/time/ZoneId;Ljava/time/ZoneRegion;
 HSPLjava/time/ZoneOffset;-><init>(I)V
-HSPLjava/time/ZoneOffset;->buildId(I)Ljava/lang/String;
+HSPLjava/time/ZoneOffset;->buildId(I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/time/ZoneOffset;->equals(Ljava/lang/Object;)Z
 HSPLjava/time/ZoneOffset;->getId()Ljava/lang/String;
 HSPLjava/time/ZoneOffset;->getRules()Ljava/time/zone/ZoneRules;
@@ -4191,14 +4458,14 @@
 HSPLjava/time/ZoneRegion;->ofId(Ljava/lang/String;Z)Ljava/time/ZoneRegion;
 HSPLjava/time/ZonedDateTime$1;-><clinit>()V
 HSPLjava/time/ZonedDateTime;-><init>(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneId;)V
-HSPLjava/time/ZonedDateTime;->create(JILjava/time/ZoneId;)Ljava/time/ZonedDateTime;+]Ljava/time/ZoneId;Ljava/time/ZoneOffset;,Ljava/time/ZoneRegion;]Ljava/time/zone/ZoneRules;Ljava/time/zone/ZoneRules;
+HSPLjava/time/ZonedDateTime;->create(JILjava/time/ZoneId;)Ljava/time/ZonedDateTime;+]Ljava/time/ZoneId;Ljava/time/ZoneRegion;,Ljava/time/ZoneOffset;]Ljava/time/zone/ZoneRules;Ljava/time/zone/ZoneRules;
 HSPLjava/time/ZonedDateTime;->from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/ZonedDateTime;+]Ljava/time/temporal/TemporalAccessor;Ljava/time/format/Parsed;
 HSPLjava/time/ZonedDateTime;->getLong(Ljava/time/temporal/TemporalField;)J+]Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;]Ljava/time/LocalDateTime;Ljava/time/LocalDateTime;]Ljava/time/ZonedDateTime;Ljava/time/ZonedDateTime;]Ljava/time/temporal/ChronoField;Ljava/time/temporal/ChronoField;
 HSPLjava/time/ZonedDateTime;->getOffset()Ljava/time/ZoneOffset;
 HSPLjava/time/ZonedDateTime;->getZone()Ljava/time/ZoneId;
 HSPLjava/time/ZonedDateTime;->of(Ljava/time/LocalDateTime;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;
 HSPLjava/time/ZonedDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;+]Ljava/time/Instant;Ljava/time/Instant;
-HSPLjava/time/ZonedDateTime;->ofLocal(Ljava/time/LocalDateTime;Ljava/time/ZoneId;Ljava/time/ZoneOffset;)Ljava/time/ZonedDateTime;+]Ljava/time/ZoneId;Ljava/time/ZoneRegion;]Ljava/util/List;Ljava/util/Collections$SingletonList;,Ljava/util/Arrays$ArrayList;]Ljava/time/zone/ZoneRules;Ljava/time/zone/ZoneRules;
+HSPLjava/time/ZonedDateTime;->ofLocal(Ljava/time/LocalDateTime;Ljava/time/ZoneId;Ljava/time/ZoneOffset;)Ljava/time/ZonedDateTime;+]Ljava/time/ZoneId;Ljava/time/ZoneRegion;]Ljava/util/List;Ljava/util/Collections$SingletonList;,Ljava/util/Arrays$ArrayList;,Ljava/util/Collections$EmptyList;]Ljava/time/zone/ZoneRules;Ljava/time/zone/ZoneRules;]Ljava/time/Duration;Ljava/time/Duration;]Ljava/time/LocalDateTime;Ljava/time/LocalDateTime;]Ljava/time/zone/ZoneOffsetTransition;Ljava/time/zone/ZoneOffsetTransition;
 HSPLjava/time/ZonedDateTime;->query(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object;
 HSPLjava/time/ZonedDateTime;->toLocalDate()Ljava/time/LocalDate;+]Ljava/time/LocalDateTime;Ljava/time/LocalDateTime;
 HSPLjava/time/ZonedDateTime;->toLocalDate()Ljava/time/chrono/ChronoLocalDate;+]Ljava/time/ZonedDateTime;Ljava/time/ZonedDateTime;
@@ -4260,8 +4527,6 @@
 HSPLjava/time/format/DateTimeFormatterBuilder;->appendLiteral(C)Ljava/time/format/DateTimeFormatterBuilder;
 HSPLjava/time/format/DateTimeFormatterBuilder;->appendValue(Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;)Ljava/time/format/DateTimeFormatterBuilder;
 HSPLjava/time/format/DateTimeFormatterBuilder;->appendValue(Ljava/time/temporal/TemporalField;I)Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->parseField(CILjava/time/temporal/TemporalField;)V+]Ljava/time/format/DateTimeFormatterBuilder;Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->parsePattern(Ljava/lang/String;)V+]Ljava/time/format/DateTimeFormatterBuilder;Ljava/time/format/DateTimeFormatterBuilder;]Ljava/util/Map;Ljava/util/HashMap;
 HSPLjava/time/format/DateTimeFormatterBuilder;->toFormatter()Ljava/time/format/DateTimeFormatter;+]Ljava/time/format/DateTimeFormatterBuilder;Ljava/time/format/DateTimeFormatterBuilder;
 HSPLjava/time/format/DateTimeFormatterBuilder;->toFormatter(Ljava/util/Locale;)Ljava/time/format/DateTimeFormatter;
 HSPLjava/time/format/DateTimeFormatterBuilder;->toFormatter(Ljava/util/Locale;Ljava/time/format/ResolverStyle;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter;
@@ -4281,9 +4546,7 @@
 HSPLjava/time/format/DateTimeParseContext;->toResolved(Ljava/time/format/ResolverStyle;Ljava/util/Set;)Ljava/time/temporal/TemporalAccessor;+]Ljava/time/format/Parsed;Ljava/time/format/Parsed;]Ljava/time/format/DateTimeParseContext;Ljava/time/format/DateTimeParseContext;]Ljava/time/format/DateTimeFormatter;Ljava/time/format/DateTimeFormatter;
 HSPLjava/time/format/DateTimePrintContext;-><init>(Ljava/time/temporal/TemporalAccessor;Ljava/time/format/DateTimeFormatter;)V
 HSPLjava/time/format/DateTimePrintContext;->adjust(Ljava/time/temporal/TemporalAccessor;Ljava/time/format/DateTimeFormatter;)Ljava/time/temporal/TemporalAccessor;
-HSPLjava/time/format/DateTimePrintContext;->getDecimalStyle()Ljava/time/format/DecimalStyle;+]Ljava/time/format/DateTimeFormatter;Ljava/time/format/DateTimeFormatter;
-HSPLjava/time/format/DateTimePrintContext;->getTemporal()Ljava/time/temporal/TemporalAccessor;
-HSPLjava/time/format/DateTimePrintContext;->getValue(Ljava/time/temporal/TemporalField;)Ljava/lang/Long;+]Ljava/time/temporal/TemporalAccessor;Ljava/time/Instant;,Ljava/time/ZonedDateTime;
+HSPLjava/time/format/DateTimePrintContext;->getValue(Ljava/time/temporal/TemporalField;)Ljava/lang/Long;+]Ljava/time/temporal/TemporalAccessor;Ljava/time/ZonedDateTime;,Ljava/time/Instant;
 HSPLjava/time/format/DecimalStyle;->convertNumberToI18N(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/time/format/DecimalStyle;->convertToDigit(C)I
 HSPLjava/time/format/DecimalStyle;->getDecimalSeparator()C
@@ -4306,7 +4569,7 @@
 HSPLjava/time/format/Parsed;->resolvePeriod()V+]Ljava/time/Period;Ljava/time/Period;
 HSPLjava/time/format/Parsed;->resolveTime(JJJJ)V+]Ljava/time/temporal/ChronoField;Ljava/time/temporal/ChronoField;
 HSPLjava/time/format/Parsed;->resolveTimeFields()V+]Ljava/lang/Long;Ljava/lang/Long;]Ljava/time/temporal/ChronoField;Ljava/time/temporal/ChronoField;]Ljava/util/Map;Ljava/util/HashMap;
-HSPLjava/time/format/Parsed;->resolveTimeLenient()V+]Ljava/time/temporal/TemporalField;Ljava/time/temporal/ChronoField;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;]Ljava/time/temporal/ChronoField;Ljava/time/temporal/ChronoField;
+HSPLjava/time/format/Parsed;->resolveTimeLenient()V+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/time/temporal/TemporalField;Ljava/time/temporal/ChronoField;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/time/temporal/ChronoField;Ljava/time/temporal/ChronoField;
 HSPLjava/time/format/Parsed;->updateCheckConflict(Ljava/time/LocalTime;Ljava/time/Period;)V
 HSPLjava/time/format/Parsed;->updateCheckConflict(Ljava/time/chrono/ChronoLocalDate;)V+]Ljava/time/chrono/Chronology;Ljava/time/chrono/IsoChronology;]Ljava/time/chrono/ChronoLocalDate;Ljava/time/LocalDate;
 HSPLjava/time/format/SignStyle;->values()[Ljava/time/format/SignStyle;
@@ -4357,9 +4620,9 @@
 HSPLjava/time/zone/ZoneOffsetTransition;->isGap()Z+]Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;]Ljava/time/zone/ZoneOffsetTransition;Ljava/time/zone/ZoneOffsetTransition;
 HSPLjava/time/zone/ZoneOffsetTransition;->of(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)Ljava/time/zone/ZoneOffsetTransition;+]Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;]Ljava/time/LocalDateTime;Ljava/time/LocalDateTime;
 HSPLjava/time/zone/ZoneOffsetTransition;->toEpochSecond()J+]Ljava/time/LocalDateTime;Ljava/time/LocalDateTime;
-HSPLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;->createDateTime(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)Ljava/time/LocalDateTime;+]Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;]Ljava/time/LocalDateTime;Ljava/time/LocalDateTime;]Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;
+HSPLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;->createDateTime(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)Ljava/time/LocalDateTime;+]Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;]Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;]Ljava/time/LocalDateTime;Ljava/time/LocalDateTime;
 HSPLjava/time/zone/ZoneOffsetTransitionRule;-><init>(Ljava/time/Month;ILjava/time/DayOfWeek;Ljava/time/LocalTime;ZLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)V
-HSPLjava/time/zone/ZoneOffsetTransitionRule;->createTransition(I)Ljava/time/zone/ZoneOffsetTransition;+]Ljava/time/LocalDate;Ljava/time/LocalDate;]Ljava/time/Month;Ljava/time/Month;]Ljava/time/chrono/IsoChronology;Ljava/time/chrono/IsoChronology;]Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;
+HSPLjava/time/zone/ZoneOffsetTransitionRule;->createTransition(I)Ljava/time/zone/ZoneOffsetTransition;+]Ljava/time/LocalDate;Ljava/time/LocalDate;]Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;]Ljava/time/Month;Ljava/time/Month;]Ljava/time/chrono/IsoChronology;Ljava/time/chrono/IsoChronology;
 HSPLjava/time/zone/ZoneOffsetTransitionRule;->getOffsetAfter()Ljava/time/ZoneOffset;
 HSPLjava/time/zone/ZoneOffsetTransitionRule;->of(Ljava/time/Month;ILjava/time/DayOfWeek;Ljava/time/LocalTime;ZLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)Ljava/time/zone/ZoneOffsetTransitionRule;
 HSPLjava/time/zone/ZoneRules;-><init>(Ljava/time/ZoneOffset;)V
@@ -4372,19 +4635,20 @@
 HSPLjava/time/zone/ZoneRules;->getValidOffsets(Ljava/time/LocalDateTime;)Ljava/util/List;+]Ljava/time/zone/ZoneOffsetTransition;Ljava/time/zone/ZoneOffsetTransition;
 HSPLjava/time/zone/ZoneRules;->of(Ljava/time/ZoneOffset;)Ljava/time/zone/ZoneRules;
 HSPLjava/time/zone/ZoneRules;->of(Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/util/List;Ljava/util/List;Ljava/util/List;)Ljava/time/zone/ZoneRules;
+HSPLjava/time/zone/ZoneRulesProvider;->getAvailableZoneIds()Ljava/util/Set;+]Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentHashMap;
 HSPLjava/time/zone/ZoneRulesProvider;->getProvider(Ljava/lang/String;)Ljava/time/zone/ZoneRulesProvider;+]Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentHashMap;
 HSPLjava/time/zone/ZoneRulesProvider;->getRules(Ljava/lang/String;Z)Ljava/time/zone/ZoneRules;+]Ljava/time/zone/ZoneRulesProvider;Ljava/time/zone/IcuZoneRulesProvider;
 HSPLjava/util/AbstractCollection;-><init>()V
-HSPLjava/util/AbstractCollection;->addAll(Ljava/util/Collection;)Z+]Ljava/util/AbstractCollection;megamorphic_types]Ljava/util/Collection;missing_types]Ljava/util/Iterator;missing_types
+HSPLjava/util/AbstractCollection;->addAll(Ljava/util/Collection;)Z+]Ljava/util/AbstractCollection;megamorphic_types]Ljava/util/Collection;megamorphic_types]Ljava/util/Iterator;megamorphic_types
 HSPLjava/util/AbstractCollection;->clear()V+]Ljava/util/AbstractCollection;Ljava/util/TreeMap$AscendingSubMap$AscendingEntrySetView;]Ljava/util/Iterator;Ljava/util/TreeMap$NavigableSubMap$SubMapEntryIterator;
 HSPLjava/util/AbstractCollection;->contains(Ljava/lang/Object;)Z+]Ljava/util/AbstractCollection;missing_types]Ljava/lang/Object;missing_types]Ljava/util/Iterator;missing_types
 HSPLjava/util/AbstractCollection;->containsAll(Ljava/util/Collection;)Z+]Ljava/util/AbstractCollection;megamorphic_types]Ljava/util/Collection;megamorphic_types]Ljava/util/Iterator;megamorphic_types
 HSPLjava/util/AbstractCollection;->isEmpty()Z+]Ljava/util/AbstractCollection;megamorphic_types
 HSPLjava/util/AbstractCollection;->remove(Ljava/lang/Object;)Z+]Ljava/util/Iterator;missing_types]Ljava/util/AbstractCollection;missing_types
-HSPLjava/util/AbstractCollection;->removeAll(Ljava/util/Collection;)Z+]Ljava/util/AbstractCollection;missing_types]Ljava/util/Collection;Ljava/util/Collections$SingletonSet;,Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/HashSet;,Ljava/util/Vector;]Ljava/util/Iterator;missing_types
-HSPLjava/util/AbstractCollection;->retainAll(Ljava/util/Collection;)Z+]Ljava/util/AbstractCollection;Ljava/util/LinkedHashSet;,Ljava/util/HashMap$KeySet;,Ljava/util/HashSet;,Ljava/util/TreeSet;,Ljava/util/LinkedHashMap$LinkedKeySet;,Ljava/util/WeakHashMap$KeySet;,Ljava/util/TreeMap$KeySet;]Ljava/util/Collection;megamorphic_types]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedKeyIterator;,Ljava/util/HashMap$KeyIterator;,Ljava/util/TreeMap$KeyIterator;,Ljava/util/WeakHashMap$KeyIterator;
+HSPLjava/util/AbstractCollection;->removeAll(Ljava/util/Collection;)Z+]Ljava/util/AbstractCollection;missing_types]Ljava/util/Collection;Ljava/util/Collections$SingletonSet;,Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/LinkedList;,Ljava/util/HashSet;,Ljava/util/Vector;]Ljava/util/Iterator;missing_types
+HSPLjava/util/AbstractCollection;->retainAll(Ljava/util/Collection;)Z+]Ljava/util/AbstractCollection;Ljava/util/LinkedHashSet;,Ljava/util/TreeSet;,Ljava/util/HashSet;,Ljava/util/WeakHashMap$KeySet;,Ljava/util/TreeMap$KeySet;,Ljava/util/HashMap$KeySet;,Ljava/util/LinkedHashMap$LinkedKeySet;]Ljava/util/Collection;megamorphic_types]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedKeyIterator;,Ljava/util/HashMap$KeyIterator;,Ljava/util/TreeMap$KeyIterator;,Ljava/util/WeakHashMap$KeyIterator;
 HSPLjava/util/AbstractCollection;->toArray()[Ljava/lang/Object;+]Ljava/util/AbstractCollection;megamorphic_types]Ljava/util/Iterator;megamorphic_types
-HSPLjava/util/AbstractCollection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;+]Ljava/util/AbstractCollection;megamorphic_types]Ljava/lang/Object;missing_types]Ljava/lang/Class;Ljava/lang/Class;]Ljava/util/Iterator;megamorphic_types
+HSPLjava/util/AbstractCollection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;+]Ljava/util/AbstractCollection;megamorphic_types]Ljava/lang/Object;megamorphic_types]Ljava/lang/Class;Ljava/lang/Class;]Ljava/util/Iterator;megamorphic_types
 HSPLjava/util/AbstractCollection;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/AbstractCollection;megamorphic_types]Ljava/util/Iterator;megamorphic_types
 HSPLjava/util/AbstractList$Itr;-><init>(Ljava/util/AbstractList;)V
 HSPLjava/util/AbstractList$Itr;-><init>(Ljava/util/AbstractList;Ljava/util/AbstractList$1;)V
@@ -4392,25 +4656,49 @@
 HSPLjava/util/AbstractList$Itr;->hasNext()Z+]Ljava/util/AbstractList;missing_types
 HSPLjava/util/AbstractList$Itr;->next()Ljava/lang/Object;+]Ljava/util/AbstractList$Itr;Ljava/util/AbstractList$Itr;,Ljava/util/AbstractList$ListItr;]Ljava/util/AbstractList;missing_types
 HSPLjava/util/AbstractList$ListItr;-><init>(Ljava/util/AbstractList;I)V
+HSPLjava/util/AbstractList$ListItr;->hasPrevious()Z
 HSPLjava/util/AbstractList$ListItr;->nextIndex()I
+HSPLjava/util/AbstractList$ListItr;->previous()Ljava/lang/Object;+]Ljava/util/AbstractList;missing_types]Ljava/util/AbstractList$ListItr;Ljava/util/AbstractList$ListItr;
+HSPLjava/util/AbstractList$ListItr;->previousIndex()I
+HSPLjava/util/AbstractList$RandomAccessSpliterator;-><init>(Ljava/util/List;)V
+HSPLjava/util/AbstractList$RandomAccessSpliterator;->characteristics()I
+HSPLjava/util/AbstractList$RandomAccessSpliterator;->checkAbstractListModCount(Ljava/util/AbstractList;I)V
+HSPLjava/util/AbstractList$RandomAccessSpliterator;->estimateSize()J
+HSPLjava/util/AbstractList$RandomAccessSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types
+HSPLjava/util/AbstractList$RandomAccessSpliterator;->get(Ljava/util/List;I)Ljava/lang/Object;+]Ljava/util/List;missing_types
+HSPLjava/util/AbstractList$RandomAccessSpliterator;->getFence()I+]Ljava/util/List;missing_types
+HSPLjava/util/AbstractList$RandomAccessSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z+]Ljava/util/function/Consumer;megamorphic_types
 HSPLjava/util/AbstractList$RandomAccessSubList;-><init>(Ljava/util/AbstractList;II)V
+HSPLjava/util/AbstractList$SubList$1;-><init>(Ljava/util/AbstractList$SubList;I)V+]Ljava/util/AbstractList;missing_types
+HSPLjava/util/AbstractList$SubList$1;->hasNext()Z+]Ljava/util/AbstractList$SubList$1;Ljava/util/AbstractList$SubList$1;
+HSPLjava/util/AbstractList$SubList$1;->next()Ljava/lang/Object;+]Ljava/util/AbstractList$SubList$1;Ljava/util/AbstractList$SubList$1;]Ljava/util/ListIterator;Ljava/util/AbstractList$ListItr;
+HSPLjava/util/AbstractList$SubList$1;->nextIndex()I+]Ljava/util/ListIterator;Ljava/util/AbstractList$ListItr;
 HSPLjava/util/AbstractList$SubList;-><init>(Ljava/util/AbstractList;II)V
+HSPLjava/util/AbstractList$SubList;->access$100(Ljava/util/AbstractList$SubList;)I
+HSPLjava/util/AbstractList$SubList;->access$200(Ljava/util/AbstractList$SubList;)Ljava/util/AbstractList;
 HSPLjava/util/AbstractList$SubList;->checkForComodification()V
-HSPLjava/util/AbstractList$SubList;->iterator()Ljava/util/Iterator;+]Ljava/util/AbstractList$SubList;Ljava/util/AbstractList$RandomAccessSubList;,Ljava/util/AbstractList$SubList;
+HSPLjava/util/AbstractList$SubList;->get(I)Ljava/lang/Object;+]Ljava/util/AbstractList;missing_types
+HSPLjava/util/AbstractList$SubList;->iterator()Ljava/util/Iterator;+]Ljava/util/AbstractList$SubList;Ljava/util/AbstractList$SubList;,Ljava/util/AbstractList$RandomAccessSubList;
 HSPLjava/util/AbstractList$SubList;->listIterator(I)Ljava/util/ListIterator;
 HSPLjava/util/AbstractList$SubList;->rangeCheckForAdd(I)V
 HSPLjava/util/AbstractList$SubList;->size()I
 HSPLjava/util/AbstractList;-><init>()V
 HSPLjava/util/AbstractList;->add(Ljava/lang/Object;)Z+]Ljava/util/AbstractList;Ljava/util/ArrayList$SubList;
-HSPLjava/util/AbstractList;->clear()V+]Ljava/util/AbstractList;Ljava/util/ArrayList$SubList;,Ljava/util/Collections$EmptyList;,Ljava/util/AbstractList$SubList;
+HSPLjava/util/AbstractList;->clear()V+]Ljava/util/AbstractList;Ljava/util/ArrayList$SubList;,Ljava/util/Collections$EmptyList;,Ljava/util/AbstractList$SubList;,Ljava/util/AbstractList$RandomAccessSubList;
 HSPLjava/util/AbstractList;->equals(Ljava/lang/Object;)Z+]Ljava/util/ListIterator;megamorphic_types]Ljava/util/AbstractList;missing_types]Ljava/util/List;megamorphic_types]Ljava/lang/Object;megamorphic_types
 HSPLjava/util/AbstractList;->hashCode()I+]Ljava/lang/Object;megamorphic_types]Ljava/util/AbstractList;missing_types]Ljava/util/Iterator;megamorphic_types
+HSPLjava/util/AbstractList;->indexOf(Ljava/lang/Object;)I+]Ljava/util/ListIterator;Ljava/util/ArrayList$SubList$1;,Ljava/util/AbstractList$ListItr;]Ljava/lang/Object;missing_types]Ljava/util/AbstractList;missing_types
 HSPLjava/util/AbstractList;->iterator()Ljava/util/Iterator;
 HSPLjava/util/AbstractList;->listIterator()Ljava/util/ListIterator;+]Ljava/util/AbstractList;megamorphic_types
 HSPLjava/util/AbstractList;->listIterator(I)Ljava/util/ListIterator;
 HSPLjava/util/AbstractList;->rangeCheckForAdd(I)V+]Ljava/util/AbstractList;missing_types
 HSPLjava/util/AbstractList;->subList(II)Ljava/util/List;+]Ljava/util/AbstractList;missing_types
 HSPLjava/util/AbstractList;->subListRangeCheck(III)V
+HSPLjava/util/AbstractMap$2$1;-><init>(Ljava/util/AbstractMap$2;)V+]Ljava/util/AbstractMap;missing_types]Ljava/util/Set;missing_types
+HSPLjava/util/AbstractMap$2$1;->hasNext()Z+]Ljava/util/Iterator;missing_types
+HSPLjava/util/AbstractMap$2$1;->next()Ljava/lang/Object;+]Ljava/util/Map$Entry;missing_types]Ljava/util/Iterator;missing_types
+HSPLjava/util/AbstractMap$2;-><init>(Ljava/util/AbstractMap;)V
+HSPLjava/util/AbstractMap$2;->iterator()Ljava/util/Iterator;
 HSPLjava/util/AbstractMap$SimpleEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
 HSPLjava/util/AbstractMap$SimpleEntry;->getKey()Ljava/lang/Object;
 HSPLjava/util/AbstractMap$SimpleEntry;->getValue()Ljava/lang/Object;
@@ -4425,17 +4713,18 @@
 HSPLjava/util/AbstractMap;->clear()V+]Ljava/util/AbstractMap;missing_types]Ljava/util/Set;missing_types
 HSPLjava/util/AbstractMap;->clone()Ljava/lang/Object;
 HSPLjava/util/AbstractMap;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/lang/Object;missing_types
-HSPLjava/util/AbstractMap;->equals(Ljava/lang/Object;)Z+]Ljava/util/Map$Entry;missing_types]Ljava/lang/Object;missing_types]Ljava/util/AbstractMap;missing_types]Ljava/util/Map;missing_types]Ljava/util/Iterator;missing_types]Ljava/util/Set;missing_types
+HSPLjava/util/AbstractMap;->equals(Ljava/lang/Object;)Z+]Ljava/util/AbstractMap;missing_types]Ljava/util/Map;missing_types]Ljava/util/Iterator;missing_types]Ljava/util/Set;missing_types]Ljava/util/Map$Entry;missing_types]Ljava/lang/Object;missing_types
 HSPLjava/util/AbstractMap;->hashCode()I+]Ljava/util/Map$Entry;missing_types]Ljava/util/AbstractMap;missing_types]Ljava/util/Iterator;missing_types]Ljava/util/Set;missing_types
 HSPLjava/util/AbstractMap;->isEmpty()Z+]Ljava/util/AbstractMap;missing_types
 HSPLjava/util/AbstractMap;->putAll(Ljava/util/Map;)V+]Ljava/util/Map$Entry;megamorphic_types]Ljava/util/AbstractMap;missing_types]Ljava/util/Map;missing_types]Ljava/util/Iterator;missing_types]Ljava/util/Set;missing_types
 HSPLjava/util/AbstractMap;->size()I
-HSPLjava/util/AbstractMap;->toString()Ljava/lang/String;+]Ljava/util/Map$Entry;missing_types]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/AbstractMap;missing_types]Ljava/util/Iterator;megamorphic_types]Ljava/util/Set;megamorphic_types
+HSPLjava/util/AbstractMap;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Map$Entry;missing_types]Ljava/util/AbstractMap;missing_types]Ljava/util/Iterator;megamorphic_types]Ljava/util/Set;megamorphic_types
+HSPLjava/util/AbstractMap;->values()Ljava/util/Collection;
 HSPLjava/util/AbstractQueue;-><init>()V
 HSPLjava/util/AbstractQueue;->add(Ljava/lang/Object;)Z+]Ljava/util/AbstractQueue;missing_types
-HSPLjava/util/AbstractQueue;->addAll(Ljava/util/Collection;)Z+]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/TreeMap$KeySet;,Ljava/util/ArrayList;,Ljava/util/Arrays$ArrayList;,Ljava/util/HashSet;,Ljava/util/HashMap$Values;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;,Ljava/util/TreeMap$KeyIterator;,Ljava/util/ArrayList$Itr;,Ljava/util/AbstractList$Itr;,Ljava/util/HashMap$KeyIterator;,Ljava/util/HashMap$ValueIterator;]Ljava/util/AbstractQueue;Ljava/util/PriorityQueue;,Ljava/util/concurrent/PriorityBlockingQueue;,Ljava/util/concurrent/LinkedBlockingQueue;
+HSPLjava/util/AbstractQueue;->addAll(Ljava/util/Collection;)Z+]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/ArrayList;,Ljava/util/TreeMap$KeySet;,Ljava/util/Arrays$ArrayList;,Ljava/util/LinkedList;,Ljava/util/PriorityQueue;,Ljava/util/HashSet;,Ljava/util/HashMap$Values;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;,Ljava/util/ArrayList$Itr;,Ljava/util/TreeMap$KeyIterator;,Ljava/util/AbstractList$Itr;,Ljava/util/PriorityQueue$Itr;,Ljava/util/LinkedList$ListItr;,Ljava/util/HashMap$KeyIterator;,Ljava/util/HashMap$ValueIterator;]Ljava/util/AbstractQueue;Ljava/util/PriorityQueue;,Ljava/util/concurrent/PriorityBlockingQueue;,Ljava/util/concurrent/LinkedBlockingQueue;
 HSPLjava/util/AbstractQueue;->clear()V+]Ljava/util/AbstractQueue;missing_types
-HSPLjava/util/AbstractQueue;->remove()Ljava/lang/Object;+]Ljava/util/AbstractQueue;Ljava/util/PriorityQueue;,Ljava/util/concurrent/ConcurrentLinkedQueue;,Ljava/util/concurrent/ArrayBlockingQueue;,Ljava/util/concurrent/LinkedBlockingQueue;
+HSPLjava/util/AbstractQueue;->remove()Ljava/lang/Object;+]Ljava/util/AbstractQueue;Ljava/util/PriorityQueue;,Ljava/util/concurrent/ConcurrentLinkedQueue;,Ljava/util/concurrent/LinkedBlockingQueue;,Ljava/util/concurrent/ArrayBlockingQueue;
 HSPLjava/util/AbstractSequentialList;-><init>()V
 HSPLjava/util/AbstractSequentialList;->iterator()Ljava/util/Iterator;+]Ljava/util/AbstractSequentialList;missing_types
 HSPLjava/util/AbstractSet;-><init>()V
@@ -4447,9 +4736,7 @@
 HSPLjava/util/ArrayDeque$DeqIterator;->hasNext()Z
 HSPLjava/util/ArrayDeque$DeqIterator;->next()Ljava/lang/Object;
 HSPLjava/util/ArrayDeque$DeqIterator;->remove()V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
-HSPLjava/util/ArrayDeque$DescendingIterator;-><init>(Ljava/util/ArrayDeque;)V
-HSPLjava/util/ArrayDeque$DescendingIterator;-><init>(Ljava/util/ArrayDeque;Ljava/util/ArrayDeque$1;)V
-HSPLjava/util/ArrayDeque$DescendingIterator;->hasNext()Z
+HSPLjava/util/ArrayDeque$DescendingIterator;->next()Ljava/lang/Object;
 HSPLjava/util/ArrayDeque;-><init>()V
 HSPLjava/util/ArrayDeque;-><init>(I)V
 HSPLjava/util/ArrayDeque;-><init>(Ljava/util/Collection;)V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/Collection;missing_types
@@ -4484,13 +4771,13 @@
 HSPLjava/util/ArrayDeque;->removeLast()Ljava/lang/Object;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
 HSPLjava/util/ArrayDeque;->size()I
 HSPLjava/util/ArrayDeque;->toArray()[Ljava/lang/Object;
-HSPLjava/util/ArrayDeque;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;+]Ljava/lang/Object;missing_types
+HSPLjava/util/ArrayDeque;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;+]Ljava/lang/Object;[Ljava/lang/StackTraceElement;
 HSPLjava/util/ArrayList$ArrayListSpliterator;-><init>(Ljava/util/ArrayList;III)V
 HSPLjava/util/ArrayList$ArrayListSpliterator;->characteristics()I
 HSPLjava/util/ArrayList$ArrayListSpliterator;->estimateSize()J
 HSPLjava/util/ArrayList$ArrayListSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types
 HSPLjava/util/ArrayList$ArrayListSpliterator;->getFence()I
-HSPLjava/util/ArrayList$ArrayListSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z+]Ljava/util/function/Consumer;Ljava/util/stream/ReferencePipeline$2$1;,Ljava/util/stream/ReferencePipeline$3$1;,Ljava/util/stream/MatchOps$1MatchSink;,Ljava/util/stream/ReferencePipeline$4$1;,Ljava/util/stream/FindOps$FindSink$OfRef;
+HSPLjava/util/ArrayList$ArrayListSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z+]Ljava/util/function/Consumer;Ljava/util/stream/ReferencePipeline$2$1;,Ljava/util/stream/MatchOps$1MatchSink;,Ljava/util/stream/ReferencePipeline$3$1;,Ljava/util/stream/FindOps$FindSink$OfRef;,Ljava/util/stream/ReferencePipeline$4$1;
 HSPLjava/util/ArrayList$Itr;-><init>(Ljava/util/ArrayList;)V
 HSPLjava/util/ArrayList$Itr;-><init>(Ljava/util/ArrayList;Ljava/util/ArrayList$1;)V
 HSPLjava/util/ArrayList$Itr;->hasNext()Z
@@ -4522,7 +4809,7 @@
 HSPLjava/util/ArrayList;->batchRemove(Ljava/util/Collection;Z)Z+]Ljava/util/Collection;megamorphic_types
 HSPLjava/util/ArrayList;->clear()V
 HSPLjava/util/ArrayList;->clone()Ljava/lang/Object;
-HSPLjava/util/ArrayList;->contains(Ljava/lang/Object;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLjava/util/ArrayList;->contains(Ljava/lang/Object;)Z+]Ljava/util/ArrayList;missing_types
 HSPLjava/util/ArrayList;->ensureCapacity(I)V
 HSPLjava/util/ArrayList;->ensureCapacityInternal(I)V
 HSPLjava/util/ArrayList;->ensureExplicitCapacity(I)V
@@ -4546,21 +4833,21 @@
 HSPLjava/util/ArrayList;->sort(Ljava/util/Comparator;)V
 HSPLjava/util/ArrayList;->spliterator()Ljava/util/Spliterator;
 HSPLjava/util/ArrayList;->subList(II)Ljava/util/List;
-HSPLjava/util/ArrayList;->subListRangeCheck(III)V
+HSPLjava/util/ArrayList;->subListRangeCheck(III)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/util/ArrayList;->toArray()[Ljava/lang/Object;
 HSPLjava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;+]Ljava/lang/Object;megamorphic_types
 HSPLjava/util/ArrayList;->trimToSize()V
 HSPLjava/util/ArrayList;->writeObject(Ljava/io/ObjectOutputStream;)V+]Ljava/io/ObjectOutputStream;missing_types
 HSPLjava/util/Arrays$ArrayList;-><init>([Ljava/lang/Object;)V
 HSPLjava/util/Arrays$ArrayList;->contains(Ljava/lang/Object;)Z+]Ljava/util/Arrays$ArrayList;Ljava/util/Arrays$ArrayList;
-HSPLjava/util/Arrays$ArrayList;->forEach(Ljava/util/function/Consumer;)V
+HSPLjava/util/Arrays$ArrayList;->forEach(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;Landroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy$$ExternalSyntheticLambda0;
 HSPLjava/util/Arrays$ArrayList;->get(I)Ljava/lang/Object;
-HSPLjava/util/Arrays$ArrayList;->indexOf(Ljava/lang/Object;)I+]Ljava/lang/Object;missing_types
+HSPLjava/util/Arrays$ArrayList;->indexOf(Ljava/lang/Object;)I+]Ljava/lang/Object;megamorphic_types
 HSPLjava/util/Arrays$ArrayList;->size()I
 HSPLjava/util/Arrays$ArrayList;->sort(Ljava/util/Comparator;)V
 HSPLjava/util/Arrays$ArrayList;->spliterator()Ljava/util/Spliterator;
-HSPLjava/util/Arrays$ArrayList;->toArray()[Ljava/lang/Object;
-HSPLjava/util/Arrays$ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;+]Ljava/lang/Object;missing_types]Ljava/util/Arrays$ArrayList;Ljava/util/Arrays$ArrayList;
+HSPLjava/util/Arrays$ArrayList;->toArray()[Ljava/lang/Object;+][Ljava/lang/Object;missing_types
+HSPLjava/util/Arrays$ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;+]Ljava/util/Arrays$ArrayList;Ljava/util/Arrays$ArrayList;]Ljava/lang/Object;[Ljava/lang/String;,[Ljava/security/cert/X509Certificate;
 HSPLjava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
 HSPLjava/util/Arrays;->binarySearch([CC)I
 HSPLjava/util/Arrays;->binarySearch([II)I
@@ -4572,7 +4859,7 @@
 HSPLjava/util/Arrays;->binarySearch0([CIIC)I
 HSPLjava/util/Arrays;->binarySearch0([IIII)I
 HSPLjava/util/Arrays;->binarySearch0([JIIJ)I
-HSPLjava/util/Arrays;->binarySearch0([Ljava/lang/Object;IILjava/lang/Object;)I+]Ljava/lang/Comparable;Ljava/lang/String;,Ljava/lang/Integer;,Ljava/time/LocalDateTime;,Ljava/lang/Character;
+HSPLjava/util/Arrays;->binarySearch0([Ljava/lang/Object;IILjava/lang/Object;)I+]Ljava/lang/Comparable;missing_types
 HSPLjava/util/Arrays;->binarySearch0([Ljava/lang/Object;IILjava/lang/Object;Ljava/util/Comparator;)I+]Ljava/util/Comparator;missing_types
 HSPLjava/util/Arrays;->copyOf([BI)[B
 HSPLjava/util/Arrays;->copyOf([CI)[C
@@ -4591,6 +4878,7 @@
 HSPLjava/util/Arrays;->copyOfRange([Ljava/lang/Object;IILjava/lang/Class;)[Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/util/Arrays;->deepEquals([Ljava/lang/Object;[Ljava/lang/Object;)Z
 HSPLjava/util/Arrays;->deepEquals0(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/lang/Object;megamorphic_types
+HSPLjava/util/Arrays;->deepHashCode([Ljava/lang/Object;)I+]Ljava/lang/Object;missing_types]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;Ljava/lang/StringBuilder;Ljava/util/Set;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;missing_types]Ljava/lang/Class;Ljava/lang/Class;]Ljava/util/Set;Ljava/util/HashSet;
 HSPLjava/util/Arrays;->equals([B[B)Z
@@ -4602,6 +4890,7 @@
 HSPLjava/util/Arrays;->fill([BIIB)V
 HSPLjava/util/Arrays;->fill([CC)V
 HSPLjava/util/Arrays;->fill([CIIC)V
+HSPLjava/util/Arrays;->fill([DD)V
 HSPLjava/util/Arrays;->fill([FF)V
 HSPLjava/util/Arrays;->fill([II)V
 HSPLjava/util/Arrays;->fill([IIII)V
@@ -4653,10 +4942,11 @@
 HSPLjava/util/BitSet;->checkRange(II)V
 HSPLjava/util/BitSet;->clear()V
 HSPLjava/util/BitSet;->clear(I)V
-HSPLjava/util/BitSet;->clone()Ljava/lang/Object;
+HSPLjava/util/BitSet;->clone()Ljava/lang/Object;+][J[J
 HSPLjava/util/BitSet;->ensureCapacity(I)V
 HSPLjava/util/BitSet;->equals(Ljava/lang/Object;)Z
 HSPLjava/util/BitSet;->expandTo(I)V
+HSPLjava/util/BitSet;->flip(II)V
 HSPLjava/util/BitSet;->get(I)Z
 HSPLjava/util/BitSet;->initWords(I)V
 HSPLjava/util/BitSet;->isEmpty()Z
@@ -4670,7 +4960,6 @@
 HSPLjava/util/BitSet;->set(IIZ)V+]Ljava/util/BitSet;Ljava/util/BitSet;
 HSPLjava/util/BitSet;->set(IZ)V+]Ljava/util/BitSet;Ljava/util/BitSet;
 HSPLjava/util/BitSet;->size()I
-HSPLjava/util/BitSet;->toByteArray()[B+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLjava/util/BitSet;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/BitSet;Ljava/util/BitSet;
 HSPLjava/util/BitSet;->trimToSize()V
 HSPLjava/util/BitSet;->valueOf([J)Ljava/util/BitSet;
@@ -4678,6 +4967,7 @@
 HSPLjava/util/Calendar;-><init>()V
 HSPLjava/util/Calendar;-><init>(Ljava/util/TimeZone;Ljava/util/Locale;)V
 HSPLjava/util/Calendar;->aggregateStamp(II)I
+HSPLjava/util/Calendar;->before(Ljava/lang/Object;)Z+]Ljava/util/Calendar;Ljava/util/GregorianCalendar;
 HSPLjava/util/Calendar;->clear()V
 HSPLjava/util/Calendar;->clone()Ljava/lang/Object;+]Ljava/util/TimeZone;missing_types
 HSPLjava/util/Calendar;->compareTo(J)I
@@ -4701,11 +4991,13 @@
 HSPLjava/util/Calendar;->internalSet(II)V
 HSPLjava/util/Calendar;->isExternallySet(I)Z
 HSPLjava/util/Calendar;->isFieldSet(II)Z
+HSPLjava/util/Calendar;->isFullyNormalized()Z
 HSPLjava/util/Calendar;->isLenient()Z
 HSPLjava/util/Calendar;->isPartiallyNormalized()Z
 HSPLjava/util/Calendar;->isSet(I)Z
 HSPLjava/util/Calendar;->selectFields()I
 HSPLjava/util/Calendar;->set(II)V+]Ljava/util/Calendar;missing_types
+HSPLjava/util/Calendar;->set(III)V+]Ljava/util/Calendar;Ljava/util/GregorianCalendar;
 HSPLjava/util/Calendar;->set(IIIIII)V+]Ljava/util/Calendar;Ljava/util/GregorianCalendar;
 HSPLjava/util/Calendar;->setFieldsComputed(I)V
 HSPLjava/util/Calendar;->setFieldsNormalized(I)V
@@ -4722,7 +5014,7 @@
 HSPLjava/util/Collections$1;-><init>(Ljava/lang/Object;)V
 HSPLjava/util/Collections$1;->hasNext()Z
 HSPLjava/util/Collections$1;->next()Ljava/lang/Object;
-HSPLjava/util/Collections$3;-><init>(Ljava/util/Collection;)V+]Ljava/util/Collection;Ljava/util/Arrays$ArrayList;,Ljava/util/ArrayList;
+HSPLjava/util/Collections$3;-><init>(Ljava/util/Collection;)V+]Ljava/util/Collection;Ljava/util/Arrays$ArrayList;,Ljava/util/HashSet;,Ljava/util/ArrayList;
 HSPLjava/util/Collections$3;->hasMoreElements()Z
 HSPLjava/util/Collections$3;->nextElement()Ljava/lang/Object;
 HSPLjava/util/Collections$CopiesList;-><init>(ILjava/lang/Object;)V
@@ -4732,12 +5024,14 @@
 HSPLjava/util/Collections$EmptyEnumeration;->hasMoreElements()Z
 HSPLjava/util/Collections$EmptyIterator;->hasNext()Z
 HSPLjava/util/Collections$EmptyList;->contains(Ljava/lang/Object;)Z
+HSPLjava/util/Collections$EmptyList;->containsAll(Ljava/util/Collection;)Z+]Ljava/util/Collection;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
 HSPLjava/util/Collections$EmptyList;->equals(Ljava/lang/Object;)Z+]Ljava/util/List;missing_types
 HSPLjava/util/Collections$EmptyList;->isEmpty()Z
 HSPLjava/util/Collections$EmptyList;->iterator()Ljava/util/Iterator;
 HSPLjava/util/Collections$EmptyList;->listIterator()Ljava/util/ListIterator;
 HSPLjava/util/Collections$EmptyList;->readResolve()Ljava/lang/Object;
 HSPLjava/util/Collections$EmptyList;->size()I
+HSPLjava/util/Collections$EmptyList;->sort(Ljava/util/Comparator;)V
 HSPLjava/util/Collections$EmptyList;->spliterator()Ljava/util/Spliterator;
 HSPLjava/util/Collections$EmptyList;->toArray()[Ljava/lang/Object;
 HSPLjava/util/Collections$EmptyList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
@@ -4767,7 +5061,7 @@
 HSPLjava/util/Collections$SetFromMap;->iterator()Ljava/util/Iterator;+]Ljava/util/Set;missing_types
 HSPLjava/util/Collections$SetFromMap;->remove(Ljava/lang/Object;)Z+]Ljava/util/Map;missing_types
 HSPLjava/util/Collections$SetFromMap;->size()I+]Ljava/util/Map;missing_types
-HSPLjava/util/Collections$SetFromMap;->toArray()[Ljava/lang/Object;+]Ljava/util/Set;Ljava/util/IdentityHashMap$KeySet;,Ljava/util/WeakHashMap$KeySet;
+HSPLjava/util/Collections$SetFromMap;->toArray()[Ljava/lang/Object;+]Ljava/util/Set;Ljava/util/WeakHashMap$KeySet;,Ljava/util/IdentityHashMap$KeySet;
 HSPLjava/util/Collections$SetFromMap;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;+]Ljava/util/Set;Ljava/util/WeakHashMap$KeySet;
 HSPLjava/util/Collections$SingletonList;-><init>(Ljava/lang/Object;)V
 HSPLjava/util/Collections$SingletonList;->contains(Ljava/lang/Object;)Z
@@ -4788,10 +5082,10 @@
 HSPLjava/util/Collections$SynchronizedCollection;-><init>(Ljava/util/Collection;)V
 HSPLjava/util/Collections$SynchronizedCollection;-><init>(Ljava/util/Collection;Ljava/lang/Object;)V
 HSPLjava/util/Collections$SynchronizedCollection;->add(Ljava/lang/Object;)Z+]Ljava/util/Collection;megamorphic_types
-HSPLjava/util/Collections$SynchronizedCollection;->addAll(Ljava/util/Collection;)Z+]Ljava/util/Collection;Ljava/util/ArrayList;,Ljava/util/LinkedList;,Ljava/util/HashSet;
+HSPLjava/util/Collections$SynchronizedCollection;->addAll(Ljava/util/Collection;)Z+]Ljava/util/Collection;Ljava/util/ArrayList;,Ljava/util/HashSet;,Ljava/util/LinkedList;
 HSPLjava/util/Collections$SynchronizedCollection;->clear()V+]Ljava/util/Collection;missing_types
 HSPLjava/util/Collections$SynchronizedCollection;->contains(Ljava/lang/Object;)Z+]Ljava/util/Collection;missing_types
-HSPLjava/util/Collections$SynchronizedCollection;->isEmpty()Z+]Ljava/util/Collection;Ljava/util/ArrayList;,Ljava/util/Hashtable$ValueCollection;,Ljava/util/HashSet;,Ljava/util/LinkedHashSet;,Landroid/util/ArraySet;,Ljava/util/HashMap$KeySet;,Ljava/util/HashMap$EntrySet;,Ljava/util/LinkedList;,Ljava/util/RegularEnumSet;
+HSPLjava/util/Collections$SynchronizedCollection;->isEmpty()Z+]Ljava/util/Collection;Ljava/util/ArrayList;,Ljava/util/HashSet;,Ljava/util/HashMap$KeySet;,Ljava/util/Hashtable$ValueCollection;,Landroid/util/ArraySet;,Ljava/util/LinkedHashSet;,Ljava/util/LinkedList;,Ljava/util/HashMap$EntrySet;,Ljava/util/RegularEnumSet;
 HSPLjava/util/Collections$SynchronizedCollection;->iterator()Ljava/util/Iterator;+]Ljava/util/Collection;megamorphic_types
 HSPLjava/util/Collections$SynchronizedCollection;->remove(Ljava/lang/Object;)Z+]Ljava/util/Collection;megamorphic_types
 HSPLjava/util/Collections$SynchronizedCollection;->size()I+]Ljava/util/Collection;megamorphic_types
@@ -4804,9 +5098,9 @@
 HSPLjava/util/Collections$SynchronizedMap;->containsKey(Ljava/lang/Object;)Z+]Ljava/util/Map;missing_types
 HSPLjava/util/Collections$SynchronizedMap;->entrySet()Ljava/util/Set;+]Ljava/util/Map;missing_types
 HSPLjava/util/Collections$SynchronizedMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;missing_types
-HSPLjava/util/Collections$SynchronizedMap;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;Ljava/util/HashMap;,Landroid/util/ArrayMap;
+HSPLjava/util/Collections$SynchronizedMap;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;missing_types
 HSPLjava/util/Collections$SynchronizedMap;->isEmpty()Z+]Ljava/util/Map;missing_types
-HSPLjava/util/Collections$SynchronizedMap;->keySet()Ljava/util/Set;+]Ljava/util/Map;Ljava/util/HashMap;
+HSPLjava/util/Collections$SynchronizedMap;->keySet()Ljava/util/Set;+]Ljava/util/Map;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;,Ljava/util/TreeMap;,Ljava/util/WeakHashMap;
 HSPLjava/util/Collections$SynchronizedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;missing_types
 HSPLjava/util/Collections$SynchronizedMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;megamorphic_types
 HSPLjava/util/Collections$SynchronizedMap;->size()I+]Ljava/util/Map;missing_types
@@ -4820,23 +5114,23 @@
 HSPLjava/util/Collections$UnmodifiableCollection$1;->next()Ljava/lang/Object;+]Ljava/util/Iterator;megamorphic_types
 HSPLjava/util/Collections$UnmodifiableCollection;-><init>(Ljava/util/Collection;)V
 HSPLjava/util/Collections$UnmodifiableCollection;->contains(Ljava/lang/Object;)Z+]Ljava/util/Collection;megamorphic_types
-HSPLjava/util/Collections$UnmodifiableCollection;->containsAll(Ljava/util/Collection;)Z+]Ljava/util/Collection;Ljava/util/HashSet;,Ljava/util/ArrayList;,Ljava/util/RegularEnumSet;
-HSPLjava/util/Collections$UnmodifiableCollection;->forEach(Ljava/util/function/Consumer;)V+]Ljava/util/Collection;Ljava/util/HashSet;
+HSPLjava/util/Collections$UnmodifiableCollection;->containsAll(Ljava/util/Collection;)Z+]Ljava/util/Collection;Ljava/util/HashSet;,Ljava/util/RegularEnumSet;,Ljava/util/ArrayList;
+HSPLjava/util/Collections$UnmodifiableCollection;->forEach(Ljava/util/function/Consumer;)V+]Ljava/util/Collection;Ljava/util/HashSet;,Ljava/util/ArrayList;
 HSPLjava/util/Collections$UnmodifiableCollection;->isEmpty()Z+]Ljava/util/Collection;megamorphic_types
 HSPLjava/util/Collections$UnmodifiableCollection;->iterator()Ljava/util/Iterator;
 HSPLjava/util/Collections$UnmodifiableCollection;->size()I+]Ljava/util/Collection;megamorphic_types
-HSPLjava/util/Collections$UnmodifiableCollection;->stream()Ljava/util/stream/Stream;+]Ljava/util/Collection;Ljava/util/HashSet;,Ljava/util/ArrayList;
+HSPLjava/util/Collections$UnmodifiableCollection;->stream()Ljava/util/stream/Stream;+]Ljava/util/Collection;Ljava/util/HashSet;,Ljava/util/ArrayList;,Ljava/util/HashMap$Values;
 HSPLjava/util/Collections$UnmodifiableCollection;->toArray()[Ljava/lang/Object;+]Ljava/util/Collection;megamorphic_types
 HSPLjava/util/Collections$UnmodifiableCollection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;+]Ljava/util/Collection;megamorphic_types
 HSPLjava/util/Collections$UnmodifiableCollection;->toString()Ljava/lang/String;+]Ljava/lang/Object;missing_types
 HSPLjava/util/Collections$UnmodifiableList$1;-><init>(Ljava/util/Collections$UnmodifiableList;I)V+]Ljava/util/List;missing_types
 HSPLjava/util/Collections$UnmodifiableList$1;->hasNext()Z+]Ljava/util/ListIterator;missing_types
-HSPLjava/util/Collections$UnmodifiableList$1;->next()Ljava/lang/Object;+]Ljava/util/ListIterator;Ljava/util/ArrayList$ListItr;,Ljava/util/AbstractList$ListItr;,Ljava/util/AbstractList$SubList$1;,Ljava/util/LinkedList$ListItr;,Ljava/util/Collections$UnmodifiableList$1;,Ljava/util/ArrayList$SubList$1;
+HSPLjava/util/Collections$UnmodifiableList$1;->next()Ljava/lang/Object;+]Ljava/util/ListIterator;Ljava/util/ArrayList$ListItr;,Ljava/util/AbstractList$ListItr;,Ljava/util/ArrayList$SubList$1;,Ljava/util/Collections$UnmodifiableList$1;,Ljava/util/AbstractList$SubList$1;,Ljava/util/LinkedList$ListItr;
 HSPLjava/util/Collections$UnmodifiableList;-><init>(Ljava/util/List;)V
 HSPLjava/util/Collections$UnmodifiableList;->equals(Ljava/lang/Object;)Z+]Ljava/util/List;missing_types
 HSPLjava/util/Collections$UnmodifiableList;->get(I)Ljava/lang/Object;+]Ljava/util/List;megamorphic_types
 HSPLjava/util/Collections$UnmodifiableList;->hashCode()I+]Ljava/util/List;missing_types
-HSPLjava/util/Collections$UnmodifiableList;->indexOf(Ljava/lang/Object;)I+]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Arrays$ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/ArrayList$SubList;,Ljava/util/concurrent/CopyOnWriteArrayList;
+HSPLjava/util/Collections$UnmodifiableList;->indexOf(Ljava/lang/Object;)I+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/ArrayList$SubList;,Ljava/util/ArrayList;,Ljava/util/Arrays$ArrayList;,Ljava/util/concurrent/CopyOnWriteArrayList;
 HSPLjava/util/Collections$UnmodifiableList;->listIterator()Ljava/util/ListIterator;+]Ljava/util/Collections$UnmodifiableList;Ljava/util/Collections$UnmodifiableRandomAccessList;
 HSPLjava/util/Collections$UnmodifiableList;->listIterator(I)Ljava/util/ListIterator;
 HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1;-><init>(Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;)V+]Ljava/util/Collection;megamorphic_types
@@ -4851,24 +5145,24 @@
 HSPLjava/util/Collections$UnmodifiableMap;-><init>(Ljava/util/Map;)V
 HSPLjava/util/Collections$UnmodifiableMap;->containsKey(Ljava/lang/Object;)Z+]Ljava/util/Map;megamorphic_types
 HSPLjava/util/Collections$UnmodifiableMap;->entrySet()Ljava/util/Set;+]Ljava/util/Map;megamorphic_types
-HSPLjava/util/Collections$UnmodifiableMap;->equals(Ljava/lang/Object;)Z+]Ljava/util/Map;Ljava/util/HashMap;,Landroid/util/ArrayMap;,Ljava/util/Collections$UnmodifiableMap;,Ljava/util/Collections$EmptyMap;
+HSPLjava/util/Collections$UnmodifiableMap;->equals(Ljava/lang/Object;)Z+]Ljava/util/Map;Ljava/util/HashMap;,Ljava/util/Collections$UnmodifiableMap;,Landroid/util/ArrayMap;,Ljava/util/Collections$EmptyMap;,Ljava/util/TreeMap;
 HSPLjava/util/Collections$UnmodifiableMap;->forEach(Ljava/util/function/BiConsumer;)V
 HSPLjava/util/Collections$UnmodifiableMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;megamorphic_types
 HSPLjava/util/Collections$UnmodifiableMap;->hashCode()I+]Ljava/util/Map;Ljava/util/HashMap;,Ljava/util/Collections$UnmodifiableMap;
 HSPLjava/util/Collections$UnmodifiableMap;->isEmpty()Z+]Ljava/util/Map;megamorphic_types
 HSPLjava/util/Collections$UnmodifiableMap;->keySet()Ljava/util/Set;+]Ljava/util/Map;missing_types
 HSPLjava/util/Collections$UnmodifiableMap;->size()I+]Ljava/util/Map;megamorphic_types
-HSPLjava/util/Collections$UnmodifiableMap;->toString()Ljava/lang/String;+]Ljava/lang/Object;Ljava/util/HashMap;
+HSPLjava/util/Collections$UnmodifiableMap;->toString()Ljava/lang/String;+]Ljava/lang/Object;Ljava/util/HashMap;,Ljava/util/TreeMap;,Landroid/util/ArrayMap;
 HSPLjava/util/Collections$UnmodifiableMap;->values()Ljava/util/Collection;+]Ljava/util/Map;missing_types
 HSPLjava/util/Collections$UnmodifiableRandomAccessList;-><init>(Ljava/util/List;)V
 HSPLjava/util/Collections$UnmodifiableRandomAccessList;->subList(II)Ljava/util/List;+]Ljava/util/List;missing_types
 HSPLjava/util/Collections$UnmodifiableSet;-><init>(Ljava/util/Set;)V
-HSPLjava/util/Collections$UnmodifiableSet;->equals(Ljava/lang/Object;)Z+]Ljava/util/Collection;Ljava/util/HashSet;,Landroid/util/ArraySet;
+HSPLjava/util/Collections$UnmodifiableSet;->equals(Ljava/lang/Object;)Z+]Ljava/util/Collection;Ljava/util/HashSet;,Landroid/util/ArraySet;,Ljava/util/LinkedHashSet;
 HSPLjava/util/Collections$UnmodifiableSortedMap;-><init>(Ljava/util/SortedMap;)V
 HSPLjava/util/Collections$UnmodifiableSortedSet;-><init>(Ljava/util/SortedSet;)V
-HSPLjava/util/Collections;->addAll(Ljava/util/Collection;[Ljava/lang/Object;)Z+]Ljava/util/Collection;missing_types
+HSPLjava/util/Collections;->addAll(Ljava/util/Collection;[Ljava/lang/Object;)Z+]Ljava/util/Collection;megamorphic_types
 HSPLjava/util/Collections;->binarySearch(Ljava/util/List;Ljava/lang/Object;)I
-HSPLjava/util/Collections;->binarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I
+HSPLjava/util/Collections;->binarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I+]Ljava/util/List;Ljava/util/Collections$SynchronizedList;
 HSPLjava/util/Collections;->disjoint(Ljava/util/Collection;Ljava/util/Collection;)Z+]Ljava/util/Collection;missing_types]Ljava/util/Iterator;missing_types
 HSPLjava/util/Collections;->emptyEnumeration()Ljava/util/Enumeration;
 HSPLjava/util/Collections;->emptyIterator()Ljava/util/Iterator;
@@ -4879,18 +5173,18 @@
 HSPLjava/util/Collections;->enumeration(Ljava/util/Collection;)Ljava/util/Enumeration;
 HSPLjava/util/Collections;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/lang/Object;missing_types
 HSPLjava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;)I+]Ljava/util/List;missing_types]Ljava/lang/Comparable;megamorphic_types
-HSPLjava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I+]Ljava/util/List;missing_types]Ljava/util/Comparator;missing_types
-HSPLjava/util/Collections;->list(Ljava/util/Enumeration;)Ljava/util/ArrayList;+]Ljava/util/Enumeration;Landroid/icu/text/TransliteratorRegistry$IDEnumeration;,Ljava/net/NetworkInterface$1checkedAddresses;,Ljava/util/Collections$3;,Ljava/util/Vector$1;,Lsun/misc/CompoundEnumeration;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLjava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I+]Ljava/util/Comparator;missing_types]Ljava/util/List;missing_types
+HSPLjava/util/Collections;->list(Ljava/util/Enumeration;)Ljava/util/ArrayList;+]Ljava/util/Enumeration;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLjava/util/Collections;->max(Ljava/util/Collection;)Ljava/lang/Object;+]Ljava/util/Collection;missing_types]Ljava/lang/Comparable;missing_types]Ljava/util/Iterator;missing_types
 HSPLjava/util/Collections;->max(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;+]Ljava/util/Collection;missing_types]Ljava/util/Iterator;missing_types]Ljava/util/Comparator;Ljava/util/Comparator$$ExternalSyntheticLambda4;
-HSPLjava/util/Collections;->min(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;+]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;,Ljava/util/ArrayList$Itr;,Ljava/util/AbstractList$Itr;]Ljava/util/Comparator;Ljava/util/Comparator$$ExternalSyntheticLambda4;
+HSPLjava/util/Collections;->min(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;+]Ljava/util/Collection;missing_types]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Ljava/util/Collections$UnmodifiableCollection$1;,Ljava/util/AbstractList$Itr;]Ljava/util/Comparator;Ljava/util/Comparator$$ExternalSyntheticLambda4;
 HSPLjava/util/Collections;->nCopies(ILjava/lang/Object;)Ljava/util/List;
 HSPLjava/util/Collections;->newSetFromMap(Ljava/util/Map;)Ljava/util/Set;
 HSPLjava/util/Collections;->reverse(Ljava/util/List;)V+]Ljava/util/List;missing_types
 HSPLjava/util/Collections;->reverseOrder()Ljava/util/Comparator;
 HSPLjava/util/Collections;->reverseOrder(Ljava/util/Comparator;)Ljava/util/Comparator;
 HSPLjava/util/Collections;->rotate(Ljava/util/List;I)V
-HSPLjava/util/Collections;->rotate1(Ljava/util/List;I)V
+HSPLjava/util/Collections;->rotate1(Ljava/util/List;I)V+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLjava/util/Collections;->shuffle(Ljava/util/List;)V
 HSPLjava/util/Collections;->shuffle(Ljava/util/List;Ljava/util/Random;)V+]Ljava/util/Random;missing_types]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Arrays$ArrayList;
 HSPLjava/util/Collections;->singleton(Ljava/lang/Object;)Ljava/util/Set;
@@ -4898,7 +5192,7 @@
 HSPLjava/util/Collections;->singletonList(Ljava/lang/Object;)Ljava/util/List;
 HSPLjava/util/Collections;->singletonMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;
 HSPLjava/util/Collections;->sort(Ljava/util/List;)V
-HSPLjava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V+]Ldalvik/system/VMRuntime;missing_types]Ljava/util/List;megamorphic_types]Ljava/util/ListIterator;Ljava/util/LinkedList$ListItr;]Ljava/lang/Object;Ljava/util/LinkedList;,Ljava/util/ArrayList;
+HSPLjava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V+]Ldalvik/system/VMRuntime;missing_types]Ljava/util/List;megamorphic_types]Ljava/lang/Object;Ljava/util/ArrayList;,Ljava/util/LinkedList;]Ljava/util/ListIterator;Ljava/util/LinkedList$ListItr;
 HSPLjava/util/Collections;->swap(Ljava/util/List;II)V+]Ljava/util/List;missing_types
 HSPLjava/util/Collections;->synchronizedCollection(Ljava/util/Collection;)Ljava/util/Collection;
 HSPLjava/util/Collections;->synchronizedCollection(Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/Collection;
@@ -4927,17 +5221,19 @@
 HSPLjava/util/ComparableTimSort;->pushRun(II)V
 HSPLjava/util/ComparableTimSort;->reverseRange([Ljava/lang/Object;II)V
 HSPLjava/util/ComparableTimSort;->sort([Ljava/lang/Object;II[Ljava/lang/Object;II)V
+HSPLjava/util/Comparator$$ExternalSyntheticLambda2;-><init>(Ljava/util/function/Function;)V
+HSPLjava/util/Comparator$$ExternalSyntheticLambda4;-><init>(Ljava/util/function/ToIntFunction;)V
 HSPLjava/util/Comparator;->comparing(Ljava/util/function/Function;)Ljava/util/Comparator;
 HSPLjava/util/Comparator;->comparingInt(Ljava/util/function/ToIntFunction;)Ljava/util/Comparator;
 HSPLjava/util/Comparator;->comparingLong(Ljava/util/function/ToLongFunction;)Ljava/util/Comparator;
-HSPLjava/util/Comparator;->lambda$comparing$77a9974f$1(Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I+]Ljava/lang/Comparable;Ljava/lang/String;,Ljava/lang/Integer;,Ljava/lang/Boolean;,Ljava/lang/Double;,Ljava/lang/Long;,Landroid/content/ComponentName;,Ljava/lang/Float;]Ljava/util/function/Function;Lcom/android/internal/telephony/ServiceStateTracker$$ExternalSyntheticLambda1;,Lcom/android/internal/telephony/ServiceStateTracker$$ExternalSyntheticLambda2;
+HSPLjava/util/Comparator;->lambda$comparing$77a9974f$1(Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I+]Ljava/util/function/Function;missing_types]Ljava/lang/Comparable;Ljava/lang/Integer;,Ljava/lang/Boolean;,Ljava/lang/String;,Ljava/lang/Long;,Landroid/content/ComponentName;,Ljava/lang/Double;,Ljava/lang/Float;
 HSPLjava/util/Comparator;->lambda$comparingInt$7b0bb60$1(Ljava/util/function/ToIntFunction;Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLjava/util/Comparator;->lambda$thenComparing$36697e65$1(Ljava/util/Comparator;Ljava/util/Comparator;Ljava/lang/Object;Ljava/lang/Object;)I+]Ljava/util/Comparator;missing_types
 HSPLjava/util/Comparator;->naturalOrder()Ljava/util/Comparator;
 HSPLjava/util/Comparator;->reversed()Ljava/util/Comparator;
 HSPLjava/util/Comparator;->thenComparing(Ljava/util/Comparator;)Ljava/util/Comparator;
 HSPLjava/util/Comparator;->thenComparing(Ljava/util/function/Function;)Ljava/util/Comparator;+]Ljava/util/Comparator;Ljava/util/Comparator$$ExternalSyntheticLambda2;
-HSPLjava/util/Comparators$NaturalOrderComparator;->compare(Ljava/lang/Comparable;Ljava/lang/Comparable;)I+]Ljava/lang/Comparable;Ljava/lang/String;,Ljava/lang/Integer;
+HSPLjava/util/Comparators$NaturalOrderComparator;->compare(Ljava/lang/Comparable;Ljava/lang/Comparable;)I+]Ljava/lang/Comparable;missing_types
 HSPLjava/util/Comparators$NaturalOrderComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I+]Ljava/util/Comparators$NaturalOrderComparator;Ljava/util/Comparators$NaturalOrderComparator;
 HSPLjava/util/Currency;-><init>(Landroid/icu/util/Currency;)V
 HSPLjava/util/Currency;->getCurrencyCode()Ljava/lang/String;
@@ -4951,17 +5247,20 @@
 HSPLjava/util/Date;->clone()Ljava/lang/Object;
 HSPLjava/util/Date;->compareTo(Ljava/util/Date;)I
 HSPLjava/util/Date;->convertToAbbr(Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/lang/StringBuilder;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLjava/util/Date;->equals(Ljava/lang/Object;)Z+]Ljava/util/Date;Ljava/util/Date;
 HSPLjava/util/Date;->getCalendarSystem(J)Lsun/util/calendar/BaseCalendar;+]Ljava/util/TimeZone;Llibcore/util/ZoneInfo;
 HSPLjava/util/Date;->getDate()I+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;
+HSPLjava/util/Date;->getHours()I
 HSPLjava/util/Date;->getMillisOf(Ljava/util/Date;)J+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;]Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/Gregorian;
 HSPLjava/util/Date;->getMinutes()I+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;
 HSPLjava/util/Date;->getMonth()I+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;
+HSPLjava/util/Date;->getSeconds()I+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;
 HSPLjava/util/Date;->getTime()J
 HSPLjava/util/Date;->getTimeImpl()J+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;
 HSPLjava/util/Date;->getYear()I+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;
-HSPLjava/util/Date;->normalize()Lsun/util/calendar/BaseCalendar$Date;+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;]Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/Gregorian;,Lsun/util/calendar/JulianCalendar;
+HSPLjava/util/Date;->normalize()Lsun/util/calendar/BaseCalendar$Date;+]Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/Gregorian;,Lsun/util/calendar/JulianCalendar;]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;
 HSPLjava/util/Date;->setTime(J)V
-HSPLjava/util/Date;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/TimeZone;Llibcore/util/ZoneInfo;]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;,Lsun/util/calendar/JulianCalendar$Date;
+HSPLjava/util/Date;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/TimeZone;missing_types]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;,Lsun/util/calendar/JulianCalendar$Date;
 HSPLjava/util/Dictionary;-><init>()V
 HSPLjava/util/DualPivotQuicksort;->doSort([CII[CII)V
 HSPLjava/util/DualPivotQuicksort;->doSort([FII[FII)V
@@ -5004,6 +5303,7 @@
 HSPLjava/util/EnumMap$Values;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap$1;)V
 HSPLjava/util/EnumMap$Values;->iterator()Ljava/util/Iterator;
 HSPLjava/util/EnumMap;-><init>(Ljava/lang/Class;)V
+HSPLjava/util/EnumMap;-><init>(Ljava/util/Map;)V+][Ljava/lang/Object;[Ljava/lang/Object;]Ljava/util/EnumMap;Ljava/util/EnumMap;
 HSPLjava/util/EnumMap;->access$1100(Ljava/util/EnumMap;)[Ljava/lang/Enum;
 HSPLjava/util/EnumMap;->access$1200(Ljava/util/EnumMap;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/EnumMap;->access$200(Ljava/util/EnumMap;)I
@@ -5027,6 +5327,7 @@
 HSPLjava/util/EnumSet;-><init>(Ljava/lang/Class;[Ljava/lang/Enum;)V
 HSPLjava/util/EnumSet;->allOf(Ljava/lang/Class;)Ljava/util/EnumSet;+]Ljava/util/EnumSet;Ljava/util/RegularEnumSet;,Ljava/util/JumboEnumSet;
 HSPLjava/util/EnumSet;->clone()Ljava/util/EnumSet;
+HSPLjava/util/EnumSet;->complementOf(Ljava/util/EnumSet;)Ljava/util/EnumSet;+]Ljava/util/EnumSet;Ljava/util/RegularEnumSet;
 HSPLjava/util/EnumSet;->copyOf(Ljava/util/Collection;)Ljava/util/EnumSet;+]Ljava/util/EnumSet;Ljava/util/RegularEnumSet;,Ljava/util/JumboEnumSet;]Ljava/util/Collection;missing_types]Ljava/util/Iterator;missing_types
 HSPLjava/util/EnumSet;->copyOf(Ljava/util/EnumSet;)Ljava/util/EnumSet;+]Ljava/util/EnumSet;Ljava/util/RegularEnumSet;
 HSPLjava/util/EnumSet;->getUniverse(Ljava/lang/Class;)[Ljava/lang/Enum;+]Ljava/lang/Class;Ljava/lang/Class;
@@ -5076,18 +5377,19 @@
 HSPLjava/util/Formatter$FormatSpecifier;->localizedMagnitude(Ljava/lang/StringBuilder;[CLjava/util/Formatter$Flags;ILjava/util/Locale;)Ljava/lang/StringBuilder;+]Ljava/text/DecimalFormatSymbols;Ljava/text/DecimalFormatSymbols;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;]Ljava/util/Locale;Ljava/util/Locale;]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;
 HSPLjava/util/Formatter$FormatSpecifier;->precision(Ljava/lang/String;)I
 HSPLjava/util/Formatter$FormatSpecifier;->print(BLjava/util/Locale;)V
-HSPLjava/util/Formatter$FormatSpecifier;->print(DLjava/util/Locale;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Appendable;Ljava/lang/StringBuilder;,Lcom/android/internal/util/FastPrintWriter;,Ljava/io/PrintWriter;,Lcom/android/internal/util/IndentingPrintWriter;]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;
+HSPLjava/util/Formatter$FormatSpecifier;->print(DLjava/util/Locale;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Appendable;missing_types]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;
 HSPLjava/util/Formatter$FormatSpecifier;->print(FLjava/util/Locale;)V
 HSPLjava/util/Formatter$FormatSpecifier;->print(ILjava/util/Locale;)V
 HSPLjava/util/Formatter$FormatSpecifier;->print(JLjava/util/Locale;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;]Ljava/lang/Appendable;missing_types
-HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/Object;Ljava/util/Locale;)V+]Ljava/lang/Appendable;Ljava/lang/StringBuilder;,Lcom/android/internal/util/FastPrintWriter;,Ljava/io/OutputStreamWriter;,Ljava/io/PrintWriter;
+HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/Object;Ljava/util/Locale;)V+]Ljava/lang/Appendable;missing_types
 HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/String;)V+]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;]Ljava/lang/Appendable;megamorphic_types]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;DLjava/util/Locale;Ljava/util/Formatter$Flags;CIZ)V+]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;]Lsun/misc/FormattedFloatingDecimal;Lsun/misc/FormattedFloatingDecimal;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;
-HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/util/Calendar;CLjava/util/Locale;)Ljava/lang/Appendable;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Calendar;Ljava/util/GregorianCalendar;]Ljava/lang/Appendable;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols;]Ljava/util/TimeZone;Llibcore/util/ZoneInfo;
-HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/util/Calendar;CLjava/util/Locale;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;]Ljava/lang/Appendable;Ljava/lang/StringBuilder;,Lcom/android/internal/util/FastPrintWriter;
+HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/util/Calendar;CLjava/util/Locale;)Ljava/lang/Appendable;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Calendar;Ljava/util/GregorianCalendar;]Ljava/lang/Appendable;Ljava/lang/StringBuilder;]Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/TimeZone;Llibcore/util/ZoneInfo;
+HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/math/BigInteger;Ljava/util/Locale;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;]Ljava/math/BigInteger;Ljava/math/BigInteger;]Ljava/lang/Appendable;Ljava/lang/StringBuilder;
+HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/util/Calendar;CLjava/util/Locale;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;]Ljava/lang/Appendable;Ljava/lang/StringBuilder;,Lcom/android/internal/util/FastPrintWriter;]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/util/Formatter$FormatSpecifier;->printBoolean(Ljava/lang/Object;)V+]Ljava/lang/Boolean;Ljava/lang/Boolean;
 HSPLjava/util/Formatter$FormatSpecifier;->printCharacter(Ljava/lang/Object;)V+]Ljava/lang/Character;Ljava/lang/Character;]Ljava/lang/Integer;Ljava/lang/Integer;
-HSPLjava/util/Formatter$FormatSpecifier;->printDateTime(Ljava/lang/Object;Ljava/util/Locale;)V+]Ljava/lang/Long;Ljava/lang/Long;]Ljava/util/Calendar;Ljava/util/GregorianCalendar;
+HSPLjava/util/Formatter$FormatSpecifier;->printDateTime(Ljava/lang/Object;Ljava/util/Locale;)V+]Ljava/util/Calendar;Ljava/util/GregorianCalendar;]Ljava/lang/Long;Ljava/lang/Long;
 HSPLjava/util/Formatter$FormatSpecifier;->printFloat(Ljava/lang/Object;Ljava/util/Locale;)V+]Ljava/lang/Double;Ljava/lang/Double;]Ljava/lang/Float;Ljava/lang/Float;
 HSPLjava/util/Formatter$FormatSpecifier;->printInteger(Ljava/lang/Object;Ljava/util/Locale;)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Byte;Ljava/lang/Byte;]Ljava/lang/Short;Ljava/lang/Short;
 HSPLjava/util/Formatter$FormatSpecifier;->printString(Ljava/lang/Object;Ljava/util/Locale;)V+]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;]Ljava/lang/Object;megamorphic_types]Ljava/util/Formatter;Ljava/util/Formatter;
@@ -5120,28 +5422,37 @@
 HSPLjava/util/Formatter;->parse(Ljava/lang/String;)[Ljava/util/Formatter$FormatString;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Formatter$FormatSpecifierParser;Ljava/util/Formatter$FormatSpecifierParser;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLjava/util/Formatter;->toString()Ljava/lang/String;+]Ljava/lang/Object;Ljava/lang/StringBuilder;
 HSPLjava/util/GregorianCalendar;-><init>()V+]Ljava/util/GregorianCalendar;missing_types
+HSPLjava/util/GregorianCalendar;-><init>(IIIIII)V
 HSPLjava/util/GregorianCalendar;-><init>(IIIIIII)V+]Lsun/util/calendar/Gregorian;Lsun/util/calendar/Gregorian;]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar;
 HSPLjava/util/GregorianCalendar;-><init>(Ljava/util/TimeZone;)V
 HSPLjava/util/GregorianCalendar;-><init>(Ljava/util/TimeZone;Ljava/util/Locale;)V+]Lsun/util/calendar/Gregorian;Lsun/util/calendar/Gregorian;]Ljava/util/GregorianCalendar;missing_types
 HSPLjava/util/GregorianCalendar;->add(II)V+]Ljava/util/GregorianCalendar;missing_types
 HSPLjava/util/GregorianCalendar;->adjustDstOffsetForInvalidWallClock(JLjava/util/TimeZone;I)I+]Ljava/util/TimeZone;missing_types
-HSPLjava/util/GregorianCalendar;->adjustForZoneAndDaylightSavingsTime(IJLjava/util/TimeZone;)J+]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar;]Ljava/util/TimeZone;missing_types]Llibcore/util/ZoneInfo;missing_types
+HSPLjava/util/GregorianCalendar;->adjustForZoneAndDaylightSavingsTime(IJLjava/util/TimeZone;)J+]Ljava/util/TimeZone;missing_types]Llibcore/util/ZoneInfo;missing_types]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar;
 HSPLjava/util/GregorianCalendar;->clone()Ljava/lang/Object;+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;
 HSPLjava/util/GregorianCalendar;->computeFields()V+]Ljava/util/GregorianCalendar;missing_types
 HSPLjava/util/GregorianCalendar;->computeFields(II)I+]Lsun/util/calendar/Gregorian;Lsun/util/calendar/Gregorian;]Ljava/util/GregorianCalendar;missing_types]Ljava/util/TimeZone;Ljava/util/SimpleTimeZone;]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;,Lsun/util/calendar/JulianCalendar$Date;]Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/Gregorian;,Lsun/util/calendar/JulianCalendar;]Llibcore/util/ZoneInfo;missing_types]Lsun/util/calendar/JulianCalendar;Lsun/util/calendar/JulianCalendar;
 HSPLjava/util/GregorianCalendar;->computeTime()V+]Ljava/util/GregorianCalendar;missing_types
+HSPLjava/util/GregorianCalendar;->getActualMaximum(I)I+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;]Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/Gregorian;]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar;]Lsun/util/calendar/CalendarDate;Lsun/util/calendar/Gregorian$Date;
+HSPLjava/util/GregorianCalendar;->getCalendarDate(J)Lsun/util/calendar/BaseCalendar$Date;
 HSPLjava/util/GregorianCalendar;->getCurrentFixedDate()J
 HSPLjava/util/GregorianCalendar;->getFixedDate(Lsun/util/calendar/BaseCalendar;II)J+]Ljava/util/GregorianCalendar;missing_types]Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/Gregorian;,Lsun/util/calendar/JulianCalendar;
+HSPLjava/util/GregorianCalendar;->getGregorianCutoverDate()Lsun/util/calendar/BaseCalendar$Date;
+HSPLjava/util/GregorianCalendar;->getJulianCalendarSystem()Lsun/util/calendar/BaseCalendar;
 HSPLjava/util/GregorianCalendar;->getLeastMaximum(I)I
 HSPLjava/util/GregorianCalendar;->getMaximum(I)I
 HSPLjava/util/GregorianCalendar;->getMinimum(I)I
-HSPLjava/util/GregorianCalendar;->getTimeZone()Ljava/util/TimeZone;+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;
+HSPLjava/util/GregorianCalendar;->getNormalizedCalendar()Ljava/util/GregorianCalendar;+]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar;
+HSPLjava/util/GregorianCalendar;->getTimeZone()Ljava/util/TimeZone;+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;,Lsun/util/calendar/JulianCalendar$Date;
 HSPLjava/util/GregorianCalendar;->getWeekNumber(JJ)I+]Ljava/util/GregorianCalendar;missing_types
 HSPLjava/util/GregorianCalendar;->internalGetEra()I+]Ljava/util/GregorianCalendar;missing_types
+HSPLjava/util/GregorianCalendar;->isCutoverYear(I)Z
 HSPLjava/util/GregorianCalendar;->isLeapYear(I)Z
 HSPLjava/util/GregorianCalendar;->monthLength(I)I+]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar;
 HSPLjava/util/GregorianCalendar;->monthLength(II)I+]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar;
 HSPLjava/util/GregorianCalendar;->pinDayOfMonth()V+]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar;
+HSPLjava/util/GregorianCalendar;->setGregorianChange(J)V
+HSPLjava/util/GregorianCalendar;->setGregorianChange(Ljava/util/Date;)V
 HSPLjava/util/GregorianCalendar;->setTimeZone(Ljava/util/TimeZone;)V+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;,Lsun/util/calendar/JulianCalendar$Date;
 HSPLjava/util/HashMap$EntryIterator;-><init>(Ljava/util/HashMap;)V
 HSPLjava/util/HashMap$EntryIterator;->next()Ljava/lang/Object;+]Ljava/util/HashMap$EntryIterator;Ljava/util/HashMap$EntryIterator;
@@ -5154,7 +5465,7 @@
 HSPLjava/util/HashMap$HashIterator;->nextNode()Ljava/util/HashMap$Node;
 HSPLjava/util/HashMap$HashIterator;->remove()V+]Ljava/util/HashMap;missing_types
 HSPLjava/util/HashMap$HashMapSpliterator;-><init>(Ljava/util/HashMap;IIII)V
-HSPLjava/util/HashMap$HashMapSpliterator;->estimateSize()J+]Ljava/util/HashMap$HashMapSpliterator;Ljava/util/HashMap$KeySpliterator;,Ljava/util/HashMap$ValueSpliterator;,Ljava/util/HashMap$EntrySpliterator;
+HSPLjava/util/HashMap$HashMapSpliterator;->estimateSize()J+]Ljava/util/HashMap$HashMapSpliterator;Ljava/util/HashMap$EntrySpliterator;,Ljava/util/HashMap$ValueSpliterator;,Ljava/util/HashMap$KeySpliterator;
 HSPLjava/util/HashMap$HashMapSpliterator;->getFence()I
 HSPLjava/util/HashMap$KeyIterator;-><init>(Ljava/util/HashMap;)V
 HSPLjava/util/HashMap$KeyIterator;->next()Ljava/lang/Object;+]Ljava/util/HashMap$KeyIterator;Ljava/util/HashMap$KeyIterator;
@@ -5162,34 +5473,33 @@
 HSPLjava/util/HashMap$KeySet;->contains(Ljava/lang/Object;)Z+]Ljava/util/HashMap;missing_types
 HSPLjava/util/HashMap$KeySet;->forEach(Ljava/util/function/Consumer;)V
 HSPLjava/util/HashMap$KeySet;->iterator()Ljava/util/Iterator;
+HSPLjava/util/HashMap$KeySet;->remove(Ljava/lang/Object;)Z+]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLjava/util/HashMap$KeySet;->size()I
 HSPLjava/util/HashMap$KeySpliterator;-><init>(Ljava/util/HashMap;IIII)V
 HSPLjava/util/HashMap$KeySpliterator;->characteristics()I
-HSPLjava/util/HashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;Ljava/util/stream/ReferencePipeline$4$1;,Ljava/util/stream/SortedOps$SizedRefSortingSink;,Ljava/util/stream/ReferencePipeline$2$1;,Ljava/util/stream/ReferencePipeline$3$1;,Ljava/util/stream/ReduceOps$2ReducingSink;,Ljava/util/stream/ReduceOps$3ReducingSink;,Ljava/util/stream/ForEachOps$ForEachOp$OfRef;
+HSPLjava/util/HashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;Ljava/util/stream/ReferencePipeline$4$1;,Ljava/util/stream/ReferencePipeline$3$1;,Ljava/util/stream/ReferencePipeline$2$1;,Ljava/util/stream/SortedOps$SizedRefSortingSink;,Ljava/util/stream/ReduceOps$2ReducingSink;,Ljava/util/stream/ReduceOps$3ReducingSink;,Ljava/util/stream/ForEachOps$ForEachOp$OfRef;
 HSPLjava/util/HashMap$Node;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
 HSPLjava/util/HashMap$Node;->getKey()Ljava/lang/Object;
 HSPLjava/util/HashMap$Node;->getValue()Ljava/lang/Object;
 HSPLjava/util/HashMap$Node;->hashCode()I
 HSPLjava/util/HashMap$Node;->setValue(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/HashMap$TreeNode;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
-HSPLjava/util/HashMap$TreeNode;->balanceDeletion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap$TreeNode;->balanceInsertion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap$TreeNode;->find(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/HashMap$TreeNode;+]Ljava/lang/Object;missing_types]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap$TreeNode;->getTreeNode(ILjava/lang/Object;)Ljava/util/HashMap$TreeNode;+]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap$TreeNode;->moveRootToFront([Ljava/util/HashMap$Node;Ljava/util/HashMap$TreeNode;)V
-HSPLjava/util/HashMap$TreeNode;->putTreeVal(Ljava/util/HashMap;[Ljava/util/HashMap$Node;ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/HashMap$TreeNode;+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;]Ljava/lang/Object;missing_types]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;
-HSPLjava/util/HashMap$TreeNode;->removeTreeNode(Ljava/util/HashMap;[Ljava/util/HashMap$Node;Z)V+]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;
+HSPLjava/util/HashMap$TreeNode;->putTreeVal(Ljava/util/HashMap;[Ljava/util/HashMap$Node;ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/HashMap$TreeNode;+]Ljava/util/HashMap;missing_types]Ljava/lang/Object;missing_types]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap$TreeNode;->rotateLeft(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap$TreeNode;->rotateRight(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap$TreeNode;->split(Ljava/util/HashMap;[Ljava/util/HashMap$Node;II)V+]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap$TreeNode;->treeify([Ljava/util/HashMap$Node;)V
-HSPLjava/util/HashMap$TreeNode;->untreeify(Ljava/util/HashMap;)Ljava/util/HashMap$Node;+]Ljava/util/HashMap;Ljava/util/HashMap;,Landroid/app/PropertyInvalidatedCache$1;,Ljava/util/LinkedHashMap;
+HSPLjava/util/HashMap$TreeNode;->untreeify(Ljava/util/HashMap;)Ljava/util/HashMap$Node;+]Ljava/util/HashMap;missing_types
 HSPLjava/util/HashMap$ValueIterator;-><init>(Ljava/util/HashMap;)V
 HSPLjava/util/HashMap$ValueIterator;->next()Ljava/lang/Object;+]Ljava/util/HashMap$ValueIterator;Ljava/util/HashMap$ValueIterator;
 HSPLjava/util/HashMap$ValueSpliterator;-><init>(Ljava/util/HashMap;IIII)V
 HSPLjava/util/HashMap$ValueSpliterator;->characteristics()I
-HSPLjava/util/HashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;Ljava/util/stream/ReduceOps$1ReducingSink;,Ljava/util/stream/ReferencePipeline$2$1;
-HSPLjava/util/HashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z+]Ljava/util/HashMap$ValueSpliterator;Ljava/util/HashMap$ValueSpliterator;]Ljava/util/function/Consumer;Ljava/util/stream/ReferencePipeline$7$1;,Ljava/util/stream/MatchOps$1MatchSink;,Ljava/util/stream/ReferencePipeline$2$1;
+HSPLjava/util/HashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;missing_types
+HSPLjava/util/HashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z+]Ljava/util/HashMap$ValueSpliterator;Ljava/util/HashMap$ValueSpliterator;]Ljava/util/function/Consumer;Ljava/util/stream/ReferencePipeline$2$1;,Ljava/util/stream/ReferencePipeline$7$1;,Ljava/util/stream/MatchOps$1MatchSink;
 HSPLjava/util/HashMap$Values;-><init>(Ljava/util/HashMap;)V
 HSPLjava/util/HashMap$Values;->forEach(Ljava/util/function/Consumer;)V
 HSPLjava/util/HashMap$Values;->iterator()Ljava/util/Iterator;
@@ -5212,19 +5522,20 @@
 HSPLjava/util/HashMap;->forEach(Ljava/util/function/BiConsumer;)V+]Ljava/util/function/BiConsumer;missing_types
 HSPLjava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/HashMap;megamorphic_types
 HSPLjava/util/HashMap;->getNode(ILjava/lang/Object;)Ljava/util/HashMap$Node;+]Ljava/lang/Object;megamorphic_types]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;
-HSPLjava/util/HashMap;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/HashMap;Ljava/util/HashMap;,Landroid/telephony/ims/ImsService$1;,Landroid/telephony/ims/feature/ImsFeature$1;
+HSPLjava/util/HashMap;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/HashMap;missing_types
 HSPLjava/util/HashMap;->hash(Ljava/lang/Object;)I+]Ljava/lang/Object;megamorphic_types
 HSPLjava/util/HashMap;->internalWriteEntries(Ljava/io/ObjectOutputStream;)V+]Ljava/io/ObjectOutputStream;Ljava/io/ObjectOutputStream;
 HSPLjava/util/HashMap;->isEmpty()Z
 HSPLjava/util/HashMap;->keySet()Ljava/util/Set;
-HSPLjava/util/HashMap;->merge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;+]Ljava/util/HashMap;Ljava/util/HashMap;
+HSPLjava/util/HashMap;->loadFactor()F
+HSPLjava/util/HashMap;->merge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/function/BiFunction;Lcom/android/internal/graphics/palette/QuantizerMap$$ExternalSyntheticLambda0;]Ljava/lang/Object;Ljava/lang/Integer;]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap;->newNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
 HSPLjava/util/HashMap;->newTreeNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/HashMap;megamorphic_types
 HSPLjava/util/HashMap;->putAll(Ljava/util/Map;)V+]Ljava/util/HashMap;missing_types
 HSPLjava/util/HashMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;
 HSPLjava/util/HashMap;->putMapEntries(Ljava/util/Map;Z)V+]Ljava/util/HashMap;missing_types]Ljava/util/Map$Entry;megamorphic_types]Ljava/util/Map;megamorphic_types]Ljava/util/Iterator;megamorphic_types]Ljava/util/Set;megamorphic_types
-HSPLjava/util/HashMap;->putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;+]Ljava/util/HashMap;missing_types]Ljava/lang/Object;megamorphic_types]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;
+HSPLjava/util/HashMap;->putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;+]Ljava/util/HashMap;megamorphic_types]Ljava/lang/Object;megamorphic_types]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap;->readObject(Ljava/io/ObjectInputStream;)V+]Ljava/util/HashMap;missing_types]Ljava/io/ObjectInputStream;missing_types
 HSPLjava/util/HashMap;->reinitialize()V
 HSPLjava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/HashMap;missing_types
@@ -5234,7 +5545,7 @@
 HSPLjava/util/HashMap;->resize()[Ljava/util/HashMap$Node;+]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap;->size()I
 HSPLjava/util/HashMap;->tableSizeFor(I)I
-HSPLjava/util/HashMap;->treeifyBin([Ljava/util/HashMap$Node;I)V+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;,Landroid/app/PropertyInvalidatedCache$1;]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;
+HSPLjava/util/HashMap;->treeifyBin([Ljava/util/HashMap$Node;I)V+]Ljava/util/HashMap;missing_types]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap;->values()Ljava/util/Collection;
 HSPLjava/util/HashMap;->writeObject(Ljava/io/ObjectOutputStream;)V+]Ljava/util/HashMap;missing_types]Ljava/io/ObjectOutputStream;Ljava/io/ObjectOutputStream;
 HSPLjava/util/HashSet;-><init>()V
@@ -5248,9 +5559,11 @@
 HSPLjava/util/HashSet;->contains(Ljava/lang/Object;)Z+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;
 HSPLjava/util/HashSet;->isEmpty()Z+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;
 HSPLjava/util/HashSet;->iterator()Ljava/util/Iterator;+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;]Ljava/util/Set;Ljava/util/HashMap$KeySet;,Ljava/util/LinkedHashMap$LinkedKeySet;
+HSPLjava/util/HashSet;->readObject(Ljava/io/ObjectInputStream;)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/io/ObjectInputStream;missing_types
 HSPLjava/util/HashSet;->remove(Ljava/lang/Object;)Z+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;
 HSPLjava/util/HashSet;->size()I+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;
 HSPLjava/util/HashSet;->spliterator()Ljava/util/Spliterator;
+HSPLjava/util/HashSet;->writeObject(Ljava/io/ObjectOutputStream;)V+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;]Ljava/io/ObjectOutputStream;Ljava/io/ObjectOutputStream;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;,Ljava/util/LinkedHashMap$LinkedKeyIterator;]Ljava/util/Set;Ljava/util/HashMap$KeySet;,Ljava/util/LinkedHashMap$LinkedKeySet;
 HSPLjava/util/Hashtable$EntrySet;-><init>(Ljava/util/Hashtable;)V
 HSPLjava/util/Hashtable$EntrySet;-><init>(Ljava/util/Hashtable;Ljava/util/Hashtable$1;)V
 HSPLjava/util/Hashtable$EntrySet;->iterator()Ljava/util/Iterator;
@@ -5289,7 +5602,7 @@
 HSPLjava/util/Hashtable;->keys()Ljava/util/Enumeration;
 HSPLjava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Object;missing_types
 HSPLjava/util/Hashtable;->rehash()V
-HSPLjava/util/Hashtable;->remove(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Object;Lcom/android/internal/telephony/NetworkRegistrationManager$NetworkRegStateCallback;,Ljava/lang/String;,Ljava/lang/Integer;
+HSPLjava/util/Hashtable;->remove(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Object;missing_types
 HSPLjava/util/Hashtable;->remove(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/lang/Object;Ljava/lang/String;,Ljava/util/logging/LogManager$LoggerWeakRef;
 HSPLjava/util/Hashtable;->size()I
 HSPLjava/util/Hashtable;->values()Ljava/util/Collection;
@@ -5308,12 +5621,14 @@
 HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;-><init>(Ljava/util/IdentityHashMap;)V
 HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;-><init>(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$1;)V
 HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;->hasNext()Z
-HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;->nextIndex()I
+HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;->nextIndex()I+]Ljava/util/IdentityHashMap$IdentityHashMapIterator;Ljava/util/IdentityHashMap$KeyIterator;
 HSPLjava/util/IdentityHashMap$KeyIterator;-><init>(Ljava/util/IdentityHashMap;)V
 HSPLjava/util/IdentityHashMap$KeyIterator;-><init>(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$1;)V
+HSPLjava/util/IdentityHashMap$KeyIterator;->next()Ljava/lang/Object;+]Ljava/util/IdentityHashMap$KeyIterator;Ljava/util/IdentityHashMap$KeyIterator;
 HSPLjava/util/IdentityHashMap$KeySet;-><init>(Ljava/util/IdentityHashMap;)V
 HSPLjava/util/IdentityHashMap$KeySet;-><init>(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$1;)V
 HSPLjava/util/IdentityHashMap$KeySet;->iterator()Ljava/util/Iterator;
+HSPLjava/util/IdentityHashMap$KeySet;->size()I
 HSPLjava/util/IdentityHashMap$ValueIterator;-><init>(Ljava/util/IdentityHashMap;)V
 HSPLjava/util/IdentityHashMap$ValueIterator;-><init>(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$1;)V
 HSPLjava/util/IdentityHashMap$ValueIterator;->next()Ljava/lang/Object;+]Ljava/util/IdentityHashMap$ValueIterator;Ljava/util/IdentityHashMap$ValueIterator;
@@ -5340,6 +5655,7 @@
 HSPLjava/util/IdentityHashMap;->size()I
 HSPLjava/util/IdentityHashMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/IdentityHashMap;->values()Ljava/util/Collection;
+HSPLjava/util/ImmutableCollections$AbstractImmutableCollection;-><init>()V
 HSPLjava/util/ImmutableCollections$AbstractImmutableList;-><init>()V
 HSPLjava/util/ImmutableCollections$ListN;-><init>([Ljava/lang/Object;)V
 HSPLjava/util/ImmutableCollections;-><clinit>()V
@@ -5438,7 +5754,7 @@
 HSPLjava/util/LinkedList;->poll()Ljava/lang/Object;
 HSPLjava/util/LinkedList;->pop()Ljava/lang/Object;+]Ljava/util/LinkedList;Ljava/util/LinkedList;
 HSPLjava/util/LinkedList;->push(Ljava/lang/Object;)V+]Ljava/util/LinkedList;Ljava/util/LinkedList;
-HSPLjava/util/LinkedList;->remove()Ljava/lang/Object;+]Ljava/util/LinkedList;Ljava/util/LinkedList;
+HSPLjava/util/LinkedList;->remove()Ljava/lang/Object;+]Ljava/util/LinkedList;missing_types
 HSPLjava/util/LinkedList;->remove(I)Ljava/lang/Object;+]Ljava/util/LinkedList;Ljava/util/LinkedList;
 HSPLjava/util/LinkedList;->remove(Ljava/lang/Object;)Z+]Ljava/lang/Object;missing_types]Ljava/util/LinkedList;missing_types
 HSPLjava/util/LinkedList;->removeFirst()Ljava/lang/Object;
@@ -5450,14 +5766,17 @@
 HSPLjava/util/LinkedList;->unlink(Ljava/util/LinkedList$Node;)Ljava/lang/Object;
 HSPLjava/util/LinkedList;->unlinkFirst(Ljava/util/LinkedList$Node;)Ljava/lang/Object;
 HSPLjava/util/LinkedList;->unlinkLast(Ljava/util/LinkedList$Node;)Ljava/lang/Object;
-HSPLjava/util/List;->sort(Ljava/util/Comparator;)V+]Ljava/util/ListIterator;Ljava/util/LinkedList$ListItr;,Ljava/util/ArrayList$SubList$1;]Ljava/util/List;Ljava/util/LinkedList;,Ljava/util/ArrayList$SubList;
+HSPLjava/util/List;->sort(Ljava/util/Comparator;)V+]Ljava/util/ListIterator;Ljava/util/LinkedList$ListItr;,Ljava/util/ArrayList$SubList$1;,Ljava/util/AbstractList$SubList$1;]Ljava/util/List;Ljava/util/LinkedList;,Ljava/util/ArrayList$SubList;,Ljava/util/AbstractList$SubList;
 HSPLjava/util/List;->spliterator()Ljava/util/Spliterator;
 HSPLjava/util/Locale$Builder;-><init>()V
 HSPLjava/util/Locale$Builder;->build()Ljava/util/Locale;+]Lsun/util/locale/InternalLocaleBuilder;Lsun/util/locale/InternalLocaleBuilder;]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;
 HSPLjava/util/Locale$Builder;->setLanguage(Ljava/lang/String;)Ljava/util/Locale$Builder;+]Lsun/util/locale/InternalLocaleBuilder;Lsun/util/locale/InternalLocaleBuilder;
+HSPLjava/util/Locale$Builder;->setRegion(Ljava/lang/String;)Ljava/util/Locale$Builder;+]Lsun/util/locale/InternalLocaleBuilder;Lsun/util/locale/InternalLocaleBuilder;
+HSPLjava/util/Locale$Builder;->setScript(Ljava/lang/String;)Ljava/util/Locale$Builder;+]Lsun/util/locale/InternalLocaleBuilder;Lsun/util/locale/InternalLocaleBuilder;
+HSPLjava/util/Locale$Builder;->setVariant(Ljava/lang/String;)Ljava/util/Locale$Builder;+]Lsun/util/locale/InternalLocaleBuilder;Lsun/util/locale/InternalLocaleBuilder;
 HSPLjava/util/Locale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Locale$Cache;Ljava/util/Locale$Cache;
 HSPLjava/util/Locale$Cache;->createObject(Ljava/util/Locale$LocaleKey;)Ljava/util/Locale;
-HSPLjava/util/Locale$LocaleKey;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;]Lsun/util/locale/LocaleExtensions;Lsun/util/locale/LocaleExtensions;
+HSPLjava/util/Locale$LocaleKey;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V+]Lsun/util/locale/LocaleExtensions;Lsun/util/locale/LocaleExtensions;]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;
 HSPLjava/util/Locale$LocaleKey;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;Ljava/util/Locale$1;)V
 HSPLjava/util/Locale$LocaleKey;->access$200(Ljava/util/Locale$LocaleKey;)Lsun/util/locale/BaseLocale;
 HSPLjava/util/Locale$LocaleKey;->access$300(Ljava/util/Locale$LocaleKey;)Lsun/util/locale/LocaleExtensions;
@@ -5468,17 +5787,22 @@
 HSPLjava/util/Locale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/util/Locale;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V
 HSPLjava/util/Locale;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;Ljava/util/Locale$1;)V
+HSPLjava/util/Locale;->access$700(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/LocaleExtensions;
 HSPLjava/util/Locale;->clone()Ljava/lang/Object;
 HSPLjava/util/Locale;->convertOldISOCodes(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/util/Locale;->equals(Ljava/lang/Object;)Z+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;
 HSPLjava/util/Locale;->forLanguageTag(Ljava/lang/String;)Ljava/util/Locale;+]Lsun/util/locale/InternalLocaleBuilder;Lsun/util/locale/InternalLocaleBuilder;]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;
+HSPLjava/util/Locale;->getAvailableLocales()[Ljava/util/Locale;
 HSPLjava/util/Locale;->getBaseLocale()Lsun/util/locale/BaseLocale;
 HSPLjava/util/Locale;->getCompatibilityExtensions(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/LocaleExtensions;
 HSPLjava/util/Locale;->getCountry()Ljava/lang/String;+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;
 HSPLjava/util/Locale;->getDefault()Ljava/util/Locale;
 HSPLjava/util/Locale;->getDefault(Ljava/util/Locale$Category;)Ljava/util/Locale;+]Ljava/util/Locale$Category;Ljava/util/Locale$Category;
 HSPLjava/util/Locale;->getDisplayCountry(Ljava/util/Locale;)Ljava/lang/String;+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;
+HSPLjava/util/Locale;->getDisplayLanguage()Ljava/lang/String;+]Ljava/util/Locale;Ljava/util/Locale;
+HSPLjava/util/Locale;->getDisplayLanguage(Ljava/util/Locale;)Ljava/lang/String;+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;
 HSPLjava/util/Locale;->getExtensionKeys()Ljava/util/Set;
+HSPLjava/util/Locale;->getISO3Country()Ljava/lang/String;
 HSPLjava/util/Locale;->getISO3Language()Ljava/lang/String;
 HSPLjava/util/Locale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/LocaleExtensions;)Ljava/util/Locale;
 HSPLjava/util/Locale;->getInstance(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)Ljava/util/Locale;+]Ljava/util/Locale$Cache;Ljava/util/Locale$Cache;
@@ -5487,15 +5811,17 @@
 HSPLjava/util/Locale;->getVariant()Ljava/lang/String;+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;
 HSPLjava/util/Locale;->hasExtensions()Z
 HSPLjava/util/Locale;->hashCode()I+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;
-HSPLjava/util/Locale;->normalizeAndValidateRegion(Ljava/lang/String;Z)Ljava/lang/String;
+HSPLjava/util/Locale;->isValidBcp47Alpha(Ljava/lang/String;II)Z
+HSPLjava/util/Locale;->readObject(Ljava/io/ObjectInputStream;)V+]Ljava/io/ObjectInputStream;missing_types]Ljava/io/ObjectInputStream$GetField;Ljava/io/ObjectInputStream$GetFieldImpl;
+HSPLjava/util/Locale;->readResolve()Ljava/lang/Object;+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;
 HSPLjava/util/Locale;->setDefault(Ljava/util/Locale$Category;Ljava/util/Locale;)V+]Ljava/util/Locale$Category;Ljava/util/Locale$Category;
 HSPLjava/util/Locale;->setDefault(Ljava/util/Locale;)V
 HSPLjava/util/Locale;->toLanguageTag()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lsun/util/locale/LanguageTag;Lsun/util/locale/LanguageTag;]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Iterator;Ljava/util/Collections$EmptyIterator;,Ljava/util/Collections$UnmodifiableCollection$1;
 HSPLjava/util/Locale;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;
 HSPLjava/util/Locale;->writeObject(Ljava/io/ObjectOutputStream;)V+]Ljava/io/ObjectOutputStream$PutField;Ljava/io/ObjectOutputStream$PutFieldImpl;]Ljava/io/ObjectOutputStream;Ljava/io/ObjectOutputStream;]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;
-HSPLjava/util/Map;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/EnumMap;
-HSPLjava/util/Map;->forEach(Ljava/util/function/BiConsumer;)V+]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
-HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;Landroid/util/ArrayMap;
+HSPLjava/util/Map;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/EnumMap;]Ljava/util/function/Function;missing_types
+HSPLjava/util/Map;->forEach(Ljava/util/function/BiConsumer;)V+]Ljava/util/Map$Entry;missing_types]Ljava/util/Map;missing_types]Ljava/util/Iterator;missing_types]Ljava/util/Set;missing_types
+HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;missing_types
 HSPLjava/util/MissingResourceException;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/util/NoSuchElementException;-><init>()V
 HSPLjava/util/NoSuchElementException;-><init>(Ljava/lang/String;)V
@@ -5510,6 +5836,11 @@
 HSPLjava/util/Objects;->toString(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/Object;Ljava/lang/String;
 HSPLjava/util/Observable;-><init>()V
 HSPLjava/util/Observable;->addObserver(Ljava/util/Observer;)V+]Ljava/util/Vector;Ljava/util/Vector;
+HSPLjava/util/Observable;->clearChanged()V
+HSPLjava/util/Observable;->hasChanged()Z
+HSPLjava/util/Observable;->notifyObservers()V
+HSPLjava/util/Observable;->notifyObservers(Ljava/lang/Object;)V+]Ljava/util/Vector;Ljava/util/Vector;
+HSPLjava/util/Observable;->setChanged()V
 HSPLjava/util/Optional;-><init>(Ljava/lang/Object;)V
 HSPLjava/util/Optional;->empty()Ljava/util/Optional;
 HSPLjava/util/Optional;->flatMap(Ljava/util/function/Function;)Ljava/util/Optional;+]Ljava/util/Optional;Ljava/util/Optional;
@@ -5558,7 +5889,7 @@
 HSPLjava/util/PriorityQueue;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
 HSPLjava/util/Properties$LineReader;-><init>(Ljava/util/Properties;Ljava/io/InputStream;)V
 HSPLjava/util/Properties$LineReader;-><init>(Ljava/util/Properties;Ljava/io/Reader;)V
-HSPLjava/util/Properties$LineReader;->readLine()I+]Ljava/io/InputStream;missing_types]Ljava/io/Reader;Ljava/io/FileReader;,Ljava/io/InputStreamReader;,Ljava/io/StringReader;
+HSPLjava/util/Properties$LineReader;->readLine()I+]Ljava/io/Reader;Ljava/io/FileReader;,Ljava/io/InputStreamReader;,Ljava/io/StringReader;]Ljava/io/InputStream;missing_types
 HSPLjava/util/Properties;-><init>()V
 HSPLjava/util/Properties;-><init>(Ljava/util/Properties;)V
 HSPLjava/util/Properties;->getProperty(Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Properties;Ljava/util/Properties;
@@ -5598,7 +5929,9 @@
 HSPLjava/util/RegularEnumSet;->add(Ljava/lang/Object;)Z+]Ljava/util/RegularEnumSet;Ljava/util/RegularEnumSet;
 HSPLjava/util/RegularEnumSet;->addAll()V
 HSPLjava/util/RegularEnumSet;->addAll(Ljava/util/Collection;)Z
+HSPLjava/util/RegularEnumSet;->complement()V
 HSPLjava/util/RegularEnumSet;->contains(Ljava/lang/Object;)Z+]Ljava/lang/Object;missing_types]Ljava/lang/Enum;missing_types]Ljava/lang/Class;Ljava/lang/Class;
+HSPLjava/util/RegularEnumSet;->containsAll(Ljava/util/Collection;)Z
 HSPLjava/util/RegularEnumSet;->equals(Ljava/lang/Object;)Z
 HSPLjava/util/RegularEnumSet;->isEmpty()Z
 HSPLjava/util/RegularEnumSet;->iterator()Ljava/util/Iterator;
@@ -5657,14 +5990,17 @@
 HSPLjava/util/Scanner;-><init>(Ljava/lang/Readable;Ljava/util/regex/Pattern;)V+]Ljava/util/Scanner;Ljava/util/Scanner;]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;
 HSPLjava/util/Scanner;-><init>(Ljava/lang/String;)V
 HSPLjava/util/Scanner;->clearCaches()V
+HSPLjava/util/Scanner;->close()V+]Ljava/io/Closeable;Ljava/io/StringReader;,Ljava/io/InputStreamReader;
 HSPLjava/util/Scanner;->ensureOpen()V
 HSPLjava/util/Scanner;->getCompleteTokenInBuffer(Ljava/util/regex/Pattern;)Ljava/lang/String;+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
 HSPLjava/util/Scanner;->hasNext()Z
 HSPLjava/util/Scanner;->hasTokenInBuffer()Z+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
+HSPLjava/util/Scanner;->makeSpace()Z+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
 HSPLjava/util/Scanner;->next()Ljava/lang/String;
-HSPLjava/util/Scanner;->readInput()V+]Ljava/lang/Readable;Ljava/io/StringReader;,Lsun/nio/cs/StreamDecoder;,Ljava/io/InputStreamReader;]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
+HSPLjava/util/Scanner;->readInput()V+]Ljava/lang/Readable;Lsun/nio/cs/StreamDecoder;,Ljava/io/StringReader;,Ljava/io/InputStreamReader;,Ljava/io/FileReader;,Ljava/io/BufferedReader;]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
 HSPLjava/util/Scanner;->revertState(Z)Z
 HSPLjava/util/Scanner;->saveState()V
+HSPLjava/util/Scanner;->translateSavedIndexes(I)V
 HSPLjava/util/Scanner;->useDelimiter(Ljava/lang/String;)Ljava/util/Scanner;
 HSPLjava/util/Scanner;->useLocale(Ljava/util/Locale;)Ljava/util/Scanner;+]Ljava/text/DecimalFormatSymbols;Ljava/text/DecimalFormatSymbols;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Locale;Ljava/util/Locale;]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;
 HSPLjava/util/ServiceLoader$1;-><init>(Ljava/util/ServiceLoader;)V+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedEntrySet;
@@ -5672,7 +6008,7 @@
 HSPLjava/util/ServiceLoader$LazyIterator;-><init>(Ljava/util/ServiceLoader;Ljava/lang/Class;Ljava/lang/ClassLoader;)V
 HSPLjava/util/ServiceLoader$LazyIterator;-><init>(Ljava/util/ServiceLoader;Ljava/lang/Class;Ljava/lang/ClassLoader;Ljava/util/ServiceLoader$1;)V
 HSPLjava/util/ServiceLoader$LazyIterator;->hasNext()Z
-HSPLjava/util/ServiceLoader$LazyIterator;->hasNextService()Z+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Enumeration;Lsun/misc/CompoundEnumeration;]Ljava/lang/ClassLoader;Landroid/app/LoadedApk$WarningContextClassLoader;,Ldalvik/system/PathClassLoader;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLjava/util/ServiceLoader$LazyIterator;->hasNextService()Z+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Enumeration;Lsun/misc/CompoundEnumeration;]Ljava/lang/ClassLoader;missing_types]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/util/ServiceLoader;-><init>(Ljava/lang/Class;Ljava/lang/ClassLoader;)V+]Ljava/util/ServiceLoader;Ljava/util/ServiceLoader;
 HSPLjava/util/ServiceLoader;->access$300(Ljava/util/ServiceLoader;)Ljava/util/LinkedHashMap;
 HSPLjava/util/ServiceLoader;->access$400(Ljava/util/ServiceLoader;)Ljava/util/ServiceLoader$LazyIterator;
@@ -5680,6 +6016,7 @@
 HSPLjava/util/ServiceLoader;->load(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;
 HSPLjava/util/ServiceLoader;->reload()V+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
 HSPLjava/util/Set;->spliterator()Ljava/util/Spliterator;
+HSPLjava/util/SimpleTimeZone;-><init>(ILjava/lang/String;)V+]Ljava/util/SimpleTimeZone;Ljava/util/SimpleTimeZone;
 HSPLjava/util/SimpleTimeZone;->clone()Ljava/lang/Object;
 HSPLjava/util/SimpleTimeZone;->getOffset(J)I+]Ljava/util/SimpleTimeZone;Ljava/util/SimpleTimeZone;
 HSPLjava/util/SimpleTimeZone;->getOffsets(J[I)I
@@ -5692,7 +6029,8 @@
 HSPLjava/util/Spliterators$ArraySpliterator;->characteristics()I
 HSPLjava/util/Spliterators$ArraySpliterator;->estimateSize()J
 HSPLjava/util/Spliterators$ArraySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types
-HSPLjava/util/Spliterators$ArraySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z+]Ljava/util/function/Consumer;Ljava/util/stream/ReferencePipeline$2$1;,Ljava/util/stream/MatchOps$1MatchSink;
+HSPLjava/util/Spliterators$ArraySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z+]Ljava/util/function/Consumer;Ljava/util/stream/MatchOps$1MatchSink;,Ljava/util/stream/ReferencePipeline$2$1;
+HSPLjava/util/Spliterators$EmptySpliterator$OfInt;->forEachRemaining(Ljava/util/function/IntConsumer;)V
 HSPLjava/util/Spliterators$EmptySpliterator$OfRef;->forEachRemaining(Ljava/util/function/Consumer;)V
 HSPLjava/util/Spliterators$EmptySpliterator;->characteristics()I
 HSPLjava/util/Spliterators$EmptySpliterator;->estimateSize()J
@@ -5705,9 +6043,10 @@
 HSPLjava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Collection;I)V
 HSPLjava/util/Spliterators$IteratorSpliterator;->characteristics()I
 HSPLjava/util/Spliterators$IteratorSpliterator;->estimateSize()J+]Ljava/util/Collection;megamorphic_types
-HSPLjava/util/Spliterators$IteratorSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;,Landroid/util/ArraySet;]Ljava/util/Iterator;megamorphic_types
-HSPLjava/util/Spliterators$IteratorSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z+]Ljava/util/function/Consumer;Ljava/util/stream/ReferencePipeline$2$1;,Ljava/util/stream/MatchOps$1MatchSink;,Ljava/util/stream/SliceOps$1$1;,Ljava/util/stream/ReferencePipeline$3$1;,Ljava/util/stream/FindOps$FindSink$OfRef;]Ljava/util/Iterator;missing_types
+HSPLjava/util/Spliterators$IteratorSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/Iterator;megamorphic_types]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;,Landroid/util/ArraySet;
+HSPLjava/util/Spliterators$IteratorSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z+]Ljava/util/function/Consumer;Ljava/util/stream/MatchOps$1MatchSink;,Ljava/util/stream/ReferencePipeline$2$1;,Ljava/util/stream/ReferencePipeline$3$1;,Ljava/util/stream/SliceOps$1$1;,Ljava/util/stream/FindOps$FindSink$OfRef;]Ljava/util/Iterator;missing_types
 HSPLjava/util/Spliterators;->checkFromToBounds(III)V
+HSPLjava/util/Spliterators;->emptyIntSpliterator()Ljava/util/Spliterator$OfInt;
 HSPLjava/util/Spliterators;->emptySpliterator()Ljava/util/Spliterator;
 HSPLjava/util/Spliterators;->spliterator(Ljava/util/Collection;I)Ljava/util/Spliterator;
 HSPLjava/util/Spliterators;->spliterator([IIII)Ljava/util/Spliterator$OfInt;
@@ -5746,13 +6085,13 @@
 HSPLjava/util/TimSort;->binarySort([Ljava/lang/Object;IIILjava/util/Comparator;)V+]Ljava/util/Comparator;megamorphic_types
 HSPLjava/util/TimSort;->countRunAndMakeAscending([Ljava/lang/Object;IILjava/util/Comparator;)I+]Ljava/util/Comparator;megamorphic_types
 HSPLjava/util/TimSort;->ensureCapacity(I)[Ljava/lang/Object;+]Ljava/lang/Object;missing_types]Ljava/lang/Class;Ljava/lang/Class;
-HSPLjava/util/TimSort;->gallopLeft(Ljava/lang/Object;[Ljava/lang/Object;IIILjava/util/Comparator;)I+]Ljava/util/Comparator;missing_types
-HSPLjava/util/TimSort;->gallopRight(Ljava/lang/Object;[Ljava/lang/Object;IIILjava/util/Comparator;)I+]Ljava/util/Comparator;missing_types
+HSPLjava/util/TimSort;->gallopLeft(Ljava/lang/Object;[Ljava/lang/Object;IIILjava/util/Comparator;)I+]Ljava/util/Comparator;megamorphic_types
+HSPLjava/util/TimSort;->gallopRight(Ljava/lang/Object;[Ljava/lang/Object;IIILjava/util/Comparator;)I+]Ljava/util/Comparator;megamorphic_types
 HSPLjava/util/TimSort;->mergeAt(I)V
 HSPLjava/util/TimSort;->mergeCollapse()V
 HSPLjava/util/TimSort;->mergeForceCollapse()V
 HSPLjava/util/TimSort;->mergeHi(IIII)V+]Ljava/util/Comparator;missing_types
-HSPLjava/util/TimSort;->mergeLo(IIII)V+]Ljava/util/Comparator;missing_types
+HSPLjava/util/TimSort;->mergeLo(IIII)V+]Ljava/util/Comparator;megamorphic_types
 HSPLjava/util/TimSort;->minRunLength(I)I
 HSPLjava/util/TimSort;->pushRun(II)V
 HSPLjava/util/TimSort;->reverseRange([Ljava/lang/Object;II)V
@@ -5764,16 +6103,17 @@
 HSPLjava/util/TimeZone;->getAvailableIDs()[Ljava/lang/String;
 HSPLjava/util/TimeZone;->getDefault()Ljava/util/TimeZone;+]Ljava/util/TimeZone;Llibcore/util/ZoneInfo;
 HSPLjava/util/TimeZone;->getDefaultRef()Ljava/util/TimeZone;
-HSPLjava/util/TimeZone;->getDisplayName(ZILjava/util/Locale;)Ljava/lang/String;+]Landroid/icu/text/TimeZoneNames;Landroid/icu/impl/TimeZoneNamesImpl;]Ljava/util/TimeZone;Llibcore/util/ZoneInfo;,Ljava/util/SimpleTimeZone;
+HSPLjava/util/TimeZone;->getDisplayName(ZILjava/util/Locale;)Ljava/lang/String;+]Landroid/icu/text/TimeZoneNames;missing_types]Ljava/util/TimeZone;missing_types
 HSPLjava/util/TimeZone;->getID()Ljava/lang/String;
 HSPLjava/util/TimeZone;->getTimeZone(Ljava/lang/String;)Ljava/util/TimeZone;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/TimeZone;Ljava/util/SimpleTimeZone;]Lcom/android/i18n/timezone/ZoneInfoDb;Lcom/android/i18n/timezone/ZoneInfoDb;
 HSPLjava/util/TimeZone;->setDefault(Ljava/util/TimeZone;)V
 HSPLjava/util/TimeZone;->setID(Ljava/lang/String;)V
-HSPLjava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;+]Ljava/util/TimeZone;Llibcore/util/ZoneInfo;
+HSPLjava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;+]Ljava/util/TimeZone;missing_types
 HSPLjava/util/Timer$1;-><init>(Ljava/util/Timer;)V
 HSPLjava/util/Timer$1;->finalize()V+]Ljava/lang/Object;Ljava/util/TaskQueue;
 HSPLjava/util/Timer;-><init>()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/util/Timer;-><init>(Ljava/lang/String;)V+]Ljava/util/TimerThread;Ljava/util/TimerThread;
+HSPLjava/util/Timer;-><init>(Ljava/lang/String;Z)V+]Ljava/util/TimerThread;Ljava/util/TimerThread;
 HSPLjava/util/Timer;->access$000(Ljava/util/Timer;)Ljava/util/TaskQueue;
 HSPLjava/util/Timer;->access$100(Ljava/util/Timer;)Ljava/util/TimerThread;
 HSPLjava/util/Timer;->cancel()V+]Ljava/lang/Object;Ljava/util/TaskQueue;]Ljava/util/TaskQueue;Ljava/util/TaskQueue;
@@ -5791,16 +6131,20 @@
 HSPLjava/util/TreeMap$AscendingSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V
 HSPLjava/util/TreeMap$AscendingSubMap;->entrySet()Ljava/util/Set;
 HSPLjava/util/TreeMap$AscendingSubMap;->keyIterator()Ljava/util/Iterator;+]Ljava/util/TreeMap$AscendingSubMap;Ljava/util/TreeMap$AscendingSubMap;
+HSPLjava/util/TreeMap$DescendingSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V
+HSPLjava/util/TreeMap$DescendingSubMap;->keyIterator()Ljava/util/Iterator;+]Ljava/util/TreeMap$DescendingSubMap;Ljava/util/TreeMap$DescendingSubMap;
 HSPLjava/util/TreeMap$EntryIterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap$EntryIterator;->next()Ljava/lang/Object;+]Ljava/util/TreeMap$EntryIterator;Ljava/util/TreeMap$EntryIterator;
 HSPLjava/util/TreeMap$EntryIterator;->next()Ljava/util/Map$Entry;+]Ljava/util/TreeMap$EntryIterator;Ljava/util/TreeMap$EntryIterator;
 HSPLjava/util/TreeMap$EntrySet;-><init>(Ljava/util/TreeMap;)V
 HSPLjava/util/TreeMap$EntrySet;->iterator()Ljava/util/Iterator;+]Ljava/util/TreeMap;Ljava/util/TreeMap;
+HSPLjava/util/TreeMap$EntrySet;->size()I+]Ljava/util/TreeMap;Ljava/util/TreeMap;
 HSPLjava/util/TreeMap$KeyIterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap$KeyIterator;->next()Ljava/lang/Object;+]Ljava/util/TreeMap$KeyIterator;Ljava/util/TreeMap$KeyIterator;
 HSPLjava/util/TreeMap$KeySet;-><init>(Ljava/util/NavigableMap;)V
 HSPLjava/util/TreeMap$KeySet;->isEmpty()Z+]Ljava/util/NavigableMap;Ljava/util/TreeMap;
 HSPLjava/util/TreeMap$KeySet;->iterator()Ljava/util/Iterator;+]Ljava/util/TreeMap;Ljava/util/TreeMap;]Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$AscendingSubMap;,Ljava/util/TreeMap$DescendingSubMap;
+HSPLjava/util/TreeMap$KeySet;->size()I+]Ljava/util/NavigableMap;Ljava/util/TreeMap$AscendingSubMap;,Ljava/util/TreeMap;
 HSPLjava/util/TreeMap$NavigableSubMap$EntrySetView;-><init>(Ljava/util/TreeMap$NavigableSubMap;)V
 HSPLjava/util/TreeMap$NavigableSubMap$EntrySetView;->isEmpty()Z+]Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$AscendingSubMap;
 HSPLjava/util/TreeMap$NavigableSubMap$EntrySetView;->size()I+]Ljava/util/TreeMap$NavigableSubMap$EntrySetView;Ljava/util/TreeMap$AscendingSubMap$AscendingEntrySetView;]Ljava/util/Iterator;Ljava/util/TreeMap$NavigableSubMap$SubMapEntryIterator;
@@ -5811,13 +6155,15 @@
 HSPLjava/util/TreeMap$NavigableSubMap$SubMapIterator;-><init>(Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap$NavigableSubMap$SubMapIterator;->hasNext()Z
 HSPLjava/util/TreeMap$NavigableSubMap$SubMapIterator;->nextEntry()Ljava/util/TreeMap$TreeMapEntry;
+HSPLjava/util/TreeMap$NavigableSubMap$SubMapIterator;->prevEntry()Ljava/util/TreeMap$TreeMapEntry;
 HSPLjava/util/TreeMap$NavigableSubMap$SubMapIterator;->removeAscending()V
 HSPLjava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;-><init>(Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;->next()Ljava/lang/Object;+]Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;
-HSPLjava/util/TreeMap$NavigableSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V+]Ljava/util/TreeMap;Ljava/util/TreeMap;
-HSPLjava/util/TreeMap$NavigableSubMap;->absHighFence()Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/TreeMap;Ljava/util/TreeMap;
-HSPLjava/util/TreeMap$NavigableSubMap;->absHighest()Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/TreeMap;Ljava/util/TreeMap;]Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$DescendingSubMap;
-HSPLjava/util/TreeMap$NavigableSubMap;->absLowest()Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/TreeMap;Ljava/util/TreeMap;]Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$AscendingSubMap;
+HSPLjava/util/TreeMap$NavigableSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V+]Ljava/util/TreeMap;missing_types
+HSPLjava/util/TreeMap$NavigableSubMap;->absHighFence()Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/TreeMap;missing_types
+HSPLjava/util/TreeMap$NavigableSubMap;->absHighest()Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/TreeMap;Ljava/util/TreeMap;]Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$DescendingSubMap;,Ljava/util/TreeMap$AscendingSubMap;
+HSPLjava/util/TreeMap$NavigableSubMap;->absLowFence()Ljava/util/TreeMap$TreeMapEntry;
+HSPLjava/util/TreeMap$NavigableSubMap;->absLowest()Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/TreeMap;missing_types]Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$AscendingSubMap;
 HSPLjava/util/TreeMap$NavigableSubMap;->isEmpty()Z+]Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$AscendingSubMap;]Ljava/util/Set;Ljava/util/TreeMap$AscendingSubMap$AscendingEntrySetView;
 HSPLjava/util/TreeMap$NavigableSubMap;->navigableKeySet()Ljava/util/NavigableSet;
 HSPLjava/util/TreeMap$NavigableSubMap;->size()I+]Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$AscendingSubMap;]Ljava/util/Set;Ljava/util/TreeMap$AscendingSubMap$AscendingEntrySetView;
@@ -5842,6 +6188,7 @@
 HSPLjava/util/TreeMap;->access$000(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap;->access$100(Ljava/util/TreeMap;)I
 HSPLjava/util/TreeMap;->access$200()Ljava/lang/Object;
+HSPLjava/util/TreeMap;->access$300(Ljava/util/TreeMap;)Ljava/util/Comparator;
 HSPLjava/util/TreeMap;->addAllForTreeSet(Ljava/util/SortedSet;Ljava/lang/Object;)V+]Ljava/util/SortedSet;Ljava/util/TreeSet;
 HSPLjava/util/TreeMap;->buildFromSorted(IIIILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/Map$Entry;Ljava/util/TreeMap$TreeMapEntry;,Ljava/util/AbstractMap$SimpleImmutableEntry;]Ljava/util/Iterator;missing_types]Ljava/io/ObjectInputStream;Landroid/os/Parcel$2;
 HSPLjava/util/TreeMap;->buildFromSorted(ILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)V
@@ -5851,19 +6198,22 @@
 HSPLjava/util/TreeMap;->clone()Ljava/lang/Object;+]Ljava/util/TreeMap;Ljava/util/TreeMap;]Ljava/util/Set;Ljava/util/TreeMap$EntrySet;
 HSPLjava/util/TreeMap;->colorOf(Ljava/util/TreeMap$TreeMapEntry;)Z
 HSPLjava/util/TreeMap;->comparator()Ljava/util/Comparator;
-HSPLjava/util/TreeMap;->compare(Ljava/lang/Object;Ljava/lang/Object;)I+]Ljava/lang/Comparable;megamorphic_types]Ljava/util/Comparator;missing_types
+HSPLjava/util/TreeMap;->compare(Ljava/lang/Object;Ljava/lang/Object;)I+]Ljava/util/Comparator;missing_types]Ljava/lang/Comparable;megamorphic_types
 HSPLjava/util/TreeMap;->computeRedLevel(I)I
 HSPLjava/util/TreeMap;->containsKey(Ljava/lang/Object;)Z+]Ljava/util/TreeMap;missing_types
 HSPLjava/util/TreeMap;->deleteEntry(Ljava/util/TreeMap$TreeMapEntry;)V
+HSPLjava/util/TreeMap;->descendingKeySet()Ljava/util/NavigableSet;+]Ljava/util/NavigableMap;Ljava/util/TreeMap$DescendingSubMap;]Ljava/util/TreeMap;Ljava/util/TreeMap;
+HSPLjava/util/TreeMap;->descendingMap()Ljava/util/NavigableMap;
 HSPLjava/util/TreeMap;->entrySet()Ljava/util/Set;
 HSPLjava/util/TreeMap;->exportEntry(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/Map$Entry;
 HSPLjava/util/TreeMap;->firstKey()Ljava/lang/Object;+]Ljava/util/TreeMap;Ljava/util/TreeMap;
 HSPLjava/util/TreeMap;->fixAfterDeletion(Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap;->fixAfterInsertion(Ljava/util/TreeMap$TreeMapEntry;)V
+HSPLjava/util/TreeMap;->floorEntry(Ljava/lang/Object;)Ljava/util/Map$Entry;+]Ljava/util/TreeMap;Ljava/util/TreeMap;
 HSPLjava/util/TreeMap;->floorKey(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/TreeMap;Ljava/util/TreeMap;
 HSPLjava/util/TreeMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/TreeMap;missing_types
-HSPLjava/util/TreeMap;->getCeilingEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/TreeMap;Ljava/util/TreeMap;
-HSPLjava/util/TreeMap;->getEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;+]Ljava/lang/Comparable;megamorphic_types]Ljava/util/TreeMap;missing_types
+HSPLjava/util/TreeMap;->getCeilingEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/TreeMap;missing_types
+HSPLjava/util/TreeMap;->getEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/TreeMap;missing_types]Ljava/lang/Comparable;megamorphic_types
 HSPLjava/util/TreeMap;->getEntryUsingComparator(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/Comparator;missing_types
 HSPLjava/util/TreeMap;->getFirstEntry()Ljava/util/TreeMap$TreeMapEntry;
 HSPLjava/util/TreeMap;->getFloorEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/TreeMap;missing_types
@@ -5881,8 +6231,9 @@
 HSPLjava/util/TreeMap;->navigableKeySet()Ljava/util/NavigableSet;
 HSPLjava/util/TreeMap;->parentOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
 HSPLjava/util/TreeMap;->pollFirstEntry()Ljava/util/Map$Entry;+]Ljava/util/TreeMap;Ljava/util/TreeMap;
+HSPLjava/util/TreeMap;->predecessor(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
 HSPLjava/util/TreeMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Comparator;missing_types]Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;]Ljava/util/TreeMap;missing_types]Ljava/lang/Comparable;missing_types
-HSPLjava/util/TreeMap;->putAll(Ljava/util/Map;)V+]Ljava/util/SortedMap;missing_types]Ljava/util/Map;missing_types]Ljava/util/Set;missing_types
+HSPLjava/util/TreeMap;->putAll(Ljava/util/Map;)V+]Ljava/util/Map;missing_types]Ljava/util/SortedMap;missing_types]Ljava/util/Set;missing_types
 HSPLjava/util/TreeMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/TreeMap;Ljava/util/TreeMap;
 HSPLjava/util/TreeMap;->rightOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
 HSPLjava/util/TreeMap;->rotateLeft(Ljava/util/TreeMap$TreeMapEntry;)V
@@ -5901,6 +6252,7 @@
 HSPLjava/util/TreeSet;-><init>(Ljava/util/SortedSet;)V+]Ljava/util/SortedSet;Ljava/util/TreeSet;]Ljava/util/TreeSet;Ljava/util/TreeSet;
 HSPLjava/util/TreeSet;->add(Ljava/lang/Object;)Z+]Ljava/util/NavigableMap;Ljava/util/TreeMap;
 HSPLjava/util/TreeSet;->addAll(Ljava/util/Collection;)Z+]Ljava/util/NavigableMap;Ljava/util/TreeMap;]Ljava/util/Collection;megamorphic_types]Ljava/util/SortedSet;Ljava/util/TreeSet;]Ljava/util/TreeMap;Ljava/util/TreeMap;
+HSPLjava/util/TreeSet;->ceiling(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/NavigableMap;Ljava/util/TreeMap;
 HSPLjava/util/TreeSet;->clear()V+]Ljava/util/NavigableMap;Ljava/util/TreeMap;
 HSPLjava/util/TreeSet;->comparator()Ljava/util/Comparator;+]Ljava/util/NavigableMap;Ljava/util/TreeMap;,Ljava/util/TreeMap$AscendingSubMap;
 HSPLjava/util/TreeSet;->contains(Ljava/lang/Object;)Z+]Ljava/util/NavigableMap;Ljava/util/TreeMap;,Ljava/util/TreeMap$AscendingSubMap;
@@ -5909,7 +6261,8 @@
 HSPLjava/util/TreeSet;->iterator()Ljava/util/Iterator;+]Ljava/util/NavigableMap;Ljava/util/TreeMap;,Ljava/util/TreeMap$AscendingSubMap;,Ljava/util/TreeMap$DescendingSubMap;]Ljava/util/NavigableSet;Ljava/util/TreeMap$KeySet;
 HSPLjava/util/TreeSet;->last()Ljava/lang/Object;+]Ljava/util/NavigableMap;Ljava/util/TreeMap;,Ljava/util/TreeMap$AscendingSubMap;
 HSPLjava/util/TreeSet;->remove(Ljava/lang/Object;)Z+]Ljava/util/NavigableMap;Ljava/util/TreeMap;
-HSPLjava/util/TreeSet;->size()I+]Ljava/util/NavigableMap;Ljava/util/TreeMap;,Ljava/util/TreeMap$AscendingSubMap;
+HSPLjava/util/TreeSet;->size()I+]Ljava/util/NavigableMap;Ljava/util/TreeMap;,Ljava/util/TreeMap$AscendingSubMap;,Ljava/util/TreeMap$DescendingSubMap;
+HSPLjava/util/TreeSet;->subSet(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableSet;+]Ljava/util/NavigableMap;Ljava/util/TreeMap;
 HSPLjava/util/TreeSet;->tailSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet;+]Ljava/util/NavigableMap;Ljava/util/TreeMap;
 HSPLjava/util/UUID;-><init>(JJ)V
 HSPLjava/util/UUID;-><init>([B)V
@@ -5919,6 +6272,7 @@
 HSPLjava/util/UUID;->getLeastSignificantBits()J
 HSPLjava/util/UUID;->getMostSignificantBits()J
 HSPLjava/util/UUID;->hashCode()I
+HSPLjava/util/UUID;->nameUUIDFromBytes([B)Ljava/util/UUID;+]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;
 HSPLjava/util/UUID;->randomUUID()Ljava/util/UUID;+]Ljava/security/SecureRandom;Ljava/security/SecureRandom;
 HSPLjava/util/UUID;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLjava/util/Vector$1;-><init>(Ljava/util/Vector;)V
@@ -5943,10 +6297,12 @@
 HSPLjava/util/Vector;->ensureCapacityHelper(I)V
 HSPLjava/util/Vector;->get(I)Ljava/lang/Object;+]Ljava/util/Vector;missing_types
 HSPLjava/util/Vector;->grow(I)V
+HSPLjava/util/Vector;->indexOf(Ljava/lang/Object;)I+]Ljava/util/Vector;Ljava/util/Vector;
 HSPLjava/util/Vector;->indexOf(Ljava/lang/Object;I)I+]Ljava/lang/Object;missing_types
 HSPLjava/util/Vector;->isEmpty()Z
 HSPLjava/util/Vector;->iterator()Ljava/util/Iterator;
 HSPLjava/util/Vector;->removeAllElements()V
+HSPLjava/util/Vector;->removeElement(Ljava/lang/Object;)Z+]Ljava/util/Vector;Ljava/util/Vector;
 HSPLjava/util/Vector;->removeElementAt(I)V
 HSPLjava/util/Vector;->size()I
 HSPLjava/util/Vector;->sort(Ljava/util/Comparator;)V
@@ -6003,6 +6359,7 @@
 HSPLjava/util/WeakHashMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/WeakHashMap;->values()Ljava/util/Collection;
 HSPLjava/util/concurrent/AbstractExecutorService;-><init>()V
+HSPLjava/util/concurrent/AbstractExecutorService;->invokeAll(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)Ljava/util/List;+]Ljava/util/concurrent/Future;Ljava/util/concurrent/FutureTask;]Ljava/util/Collection;Ljava/util/ArrayList;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;]Ljava/util/concurrent/AbstractExecutorService;Ljava/util/concurrent/ThreadPoolExecutor;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
 HSPLjava/util/concurrent/AbstractExecutorService;->newTaskFor(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/RunnableFuture;
 HSPLjava/util/concurrent/AbstractExecutorService;->newTaskFor(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/RunnableFuture;
 HSPLjava/util/concurrent/AbstractExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;+]Ljava/util/concurrent/AbstractExecutorService;missing_types
@@ -6017,6 +6374,7 @@
 HSPLjava/util/concurrent/ArrayBlockingQueue;->itemAt(I)Ljava/lang/Object;
 HSPLjava/util/concurrent/ArrayBlockingQueue;->offer(Ljava/lang/Object;)Z+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
 HSPLjava/util/concurrent/ArrayBlockingQueue;->peek()Ljava/lang/Object;+]Ljava/util/concurrent/ArrayBlockingQueue;Ljava/util/concurrent/ArrayBlockingQueue;]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
+HSPLjava/util/concurrent/ArrayBlockingQueue;->poll()Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
 HSPLjava/util/concurrent/ArrayBlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$1;,Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$5;
 HSPLjava/util/concurrent/ArrayBlockingQueue;->put(Ljava/lang/Object;)V+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
 HSPLjava/util/concurrent/ArrayBlockingQueue;->size()I+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
@@ -6034,19 +6392,20 @@
 HSPLjava/util/concurrent/CompletableFuture;->completeValue(Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/CompletableFuture;->get()Ljava/lang/Object;
 HSPLjava/util/concurrent/CompletableFuture;->get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$4;
+HSPLjava/util/concurrent/CompletableFuture;->internalComplete(Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/CompletableFuture;->isDone()Z
 HSPLjava/util/concurrent/CompletableFuture;->lazySetNext(Ljava/util/concurrent/CompletableFuture$Completion;Ljava/util/concurrent/CompletableFuture$Completion;)V
 HSPLjava/util/concurrent/CompletableFuture;->postComplete()V+]Ljava/util/concurrent/CompletableFuture$Completion;megamorphic_types]Ljava/util/concurrent/CompletableFuture;missing_types
 HSPLjava/util/concurrent/CompletableFuture;->reportGet(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/concurrent/CompletableFuture;->timedGet(J)Ljava/lang/Object;+]Ljava/util/concurrent/CompletableFuture;missing_types
 HSPLjava/util/concurrent/CompletableFuture;->tryPushStack(Ljava/util/concurrent/CompletableFuture$Completion;)Z
-HSPLjava/util/concurrent/CompletableFuture;->waitingGet(Z)Ljava/lang/Object;+]Ljava/util/concurrent/CompletableFuture;Lcom/android/internal/infra/AndroidFuture;,Ljava/util/concurrent/CompletableFuture;,Lcom/android/internal/infra/AndroidFuture$ThenComposeAsync;
+HSPLjava/util/concurrent/CompletableFuture;->waitingGet(Z)Ljava/lang/Object;+]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;,Lcom/android/internal/infra/AndroidFuture;,Lcom/android/internal/infra/AndroidFuture$ThenComposeAsync;
 HSPLjava/util/concurrent/ConcurrentHashMap$BaseIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V+]Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;,Ljava/util/concurrent/ConcurrentHashMap$EntryIterator;,Ljava/util/concurrent/ConcurrentHashMap$KeyIterator;
 HSPLjava/util/concurrent/ConcurrentHashMap$BaseIterator;->hasNext()Z
 HSPLjava/util/concurrent/ConcurrentHashMap$BaseIterator;->remove()V+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
 HSPLjava/util/concurrent/ConcurrentHashMap$CollectionView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
 HSPLjava/util/concurrent/ConcurrentHashMap$CollectionView;->size()I+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
-HSPLjava/util/concurrent/ConcurrentHashMap$CollectionView;->toArray()[Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Ljava/util/Iterator;Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;,Ljava/util/concurrent/ConcurrentHashMap$KeyIterator;,Ljava/util/concurrent/ConcurrentHashMap$EntryIterator;]Ljava/util/concurrent/ConcurrentHashMap$CollectionView;Ljava/util/concurrent/ConcurrentHashMap$KeySetView;,Ljava/util/concurrent/ConcurrentHashMap$ValuesView;,Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;
+HSPLjava/util/concurrent/ConcurrentHashMap$CollectionView;->toArray()[Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Ljava/util/Iterator;Ljava/util/concurrent/ConcurrentHashMap$EntryIterator;,Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;,Ljava/util/concurrent/ConcurrentHashMap$KeyIterator;]Ljava/util/concurrent/ConcurrentHashMap$CollectionView;Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;,Ljava/util/concurrent/ConcurrentHashMap$KeySetView;,Ljava/util/concurrent/ConcurrentHashMap$ValuesView;
 HSPLjava/util/concurrent/ConcurrentHashMap$CounterCell;-><init>(J)V
 HSPLjava/util/concurrent/ConcurrentHashMap$EntryIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
 HSPLjava/util/concurrent/ConcurrentHashMap$EntryIterator;->next()Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentHashMap$EntryIterator;Ljava/util/concurrent/ConcurrentHashMap$EntryIterator;
@@ -6067,6 +6426,8 @@
 HSPLjava/util/concurrent/ConcurrentHashMap$ReservationNode;-><init>()V
 HSPLjava/util/concurrent/ConcurrentHashMap$Traverser;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;III)V
 HSPLjava/util/concurrent/ConcurrentHashMap$Traverser;->advance()Ljava/util/concurrent/ConcurrentHashMap$Node;
+HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
+HSPLjava/util/concurrent/ConcurrentHashMap$TreeNode;->findTreeNode(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;+]Ljava/lang/Object;Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle;
 HSPLjava/util/concurrent/ConcurrentHashMap$ValueIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
 HSPLjava/util/concurrent/ConcurrentHashMap$ValueIterator;->next()Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;
 HSPLjava/util/concurrent/ConcurrentHashMap$ValuesView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
@@ -6074,14 +6435,15 @@
 HSPLjava/util/concurrent/ConcurrentHashMap;-><init>()V
 HSPLjava/util/concurrent/ConcurrentHashMap;-><init>(I)V
 HSPLjava/util/concurrent/ConcurrentHashMap;-><init>(IFI)V
+HSPLjava/util/concurrent/ConcurrentHashMap;-><init>(Ljava/util/Map;)V+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
 HSPLjava/util/concurrent/ConcurrentHashMap;->addCount(JI)V+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
 HSPLjava/util/concurrent/ConcurrentHashMap;->casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
 HSPLjava/util/concurrent/ConcurrentHashMap;->clear()V
-HSPLjava/util/concurrent/ConcurrentHashMap;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;+]Ljava/lang/Object;Ljava/lang/Integer;,Landroid/net/Uri$OpaqueUri;,Ljava/util/Optional;,Ljava/lang/String;,Landroid/bluetooth/BluetoothDevice;,Landroid/net/Uri$StringUri;
+HSPLjava/util/concurrent/ConcurrentHashMap;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;+]Ljava/lang/Object;missing_types
 HSPLjava/util/concurrent/ConcurrentHashMap;->containsKey(Ljava/lang/Object;)Z+]Ljava/util/concurrent/ConcurrentHashMap;missing_types
 HSPLjava/util/concurrent/ConcurrentHashMap;->entrySet()Ljava/util/Set;
 HSPLjava/util/concurrent/ConcurrentHashMap;->fullAddCount(JZ)V
-HSPLjava/util/concurrent/ConcurrentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Object;megamorphic_types]Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;
+HSPLjava/util/concurrent/ConcurrentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Object;megamorphic_types]Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;,Ljava/util/concurrent/ConcurrentHashMap$ReservationNode;
 HSPLjava/util/concurrent/ConcurrentHashMap;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
 HSPLjava/util/concurrent/ConcurrentHashMap;->helpTransfer([Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)[Ljava/util/concurrent/ConcurrentHashMap$Node;
 HSPLjava/util/concurrent/ConcurrentHashMap;->initTable()[Ljava/util/concurrent/ConcurrentHashMap$Node;
@@ -6103,6 +6465,7 @@
 HSPLjava/util/concurrent/ConcurrentHashMap;->tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
 HSPLjava/util/concurrent/ConcurrentHashMap;->tableSizeFor(I)I
 HSPLjava/util/concurrent/ConcurrentHashMap;->transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
+HSPLjava/util/concurrent/ConcurrentHashMap;->treeifyBin([Ljava/util/concurrent/ConcurrentHashMap$Node;I)V
 HSPLjava/util/concurrent/ConcurrentHashMap;->tryPresize(I)V
 HSPLjava/util/concurrent/ConcurrentHashMap;->values()Ljava/util/Collection;
 HSPLjava/util/concurrent/ConcurrentLinkedDeque$Node;-><init>(Ljava/lang/Object;)V
@@ -6120,13 +6483,13 @@
 HSPLjava/util/concurrent/ConcurrentLinkedDeque;->nextTerminator()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
 HSPLjava/util/concurrent/ConcurrentLinkedDeque;->offerLast(Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/ConcurrentLinkedDeque;->peekFirst()Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentLinkedDeque;Ljava/util/concurrent/ConcurrentLinkedDeque;
-HSPLjava/util/concurrent/ConcurrentLinkedDeque;->pollFirst()Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;]Ljava/util/concurrent/ConcurrentLinkedDeque;Ljava/util/concurrent/ConcurrentLinkedDeque;
+HSPLjava/util/concurrent/ConcurrentLinkedDeque;->pollFirst()Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentLinkedDeque;Ljava/util/concurrent/ConcurrentLinkedDeque;]Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
 HSPLjava/util/concurrent/ConcurrentLinkedDeque;->prevTerminator()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
 HSPLjava/util/concurrent/ConcurrentLinkedDeque;->size()I+]Ljava/util/concurrent/ConcurrentLinkedDeque;Ljava/util/concurrent/ConcurrentLinkedDeque;
 HSPLjava/util/concurrent/ConcurrentLinkedDeque;->skipDeletedPredecessors(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V+]Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
 HSPLjava/util/concurrent/ConcurrentLinkedDeque;->skipDeletedSuccessors(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V+]Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
 HSPLjava/util/concurrent/ConcurrentLinkedDeque;->succ(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;+]Ljava/util/concurrent/ConcurrentLinkedDeque;Ljava/util/concurrent/ConcurrentLinkedDeque;
-HSPLjava/util/concurrent/ConcurrentLinkedDeque;->unlink(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V+]Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;]Ljava/util/concurrent/ConcurrentLinkedDeque;Ljava/util/concurrent/ConcurrentLinkedDeque;
+HSPLjava/util/concurrent/ConcurrentLinkedDeque;->unlink(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V+]Ljava/util/concurrent/ConcurrentLinkedDeque;Ljava/util/concurrent/ConcurrentLinkedDeque;]Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
 HSPLjava/util/concurrent/ConcurrentLinkedDeque;->unlinkLast(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V+]Ljava/util/concurrent/ConcurrentLinkedDeque;Ljava/util/concurrent/ConcurrentLinkedDeque;]Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
 HSPLjava/util/concurrent/ConcurrentLinkedDeque;->updateHead()V
 HSPLjava/util/concurrent/ConcurrentLinkedDeque;->updateTail()V
@@ -6141,6 +6504,7 @@
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->casItem(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/lang/Object;Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->casNext(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->casTail(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z
+HSPLjava/util/concurrent/ConcurrentLinkedQueue;->contains(Ljava/lang/Object;)Z+]Ljava/util/concurrent/ConcurrentLinkedQueue;Ljava/util/concurrent/ConcurrentLinkedQueue;
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->first()Ljava/util/concurrent/ConcurrentLinkedQueue$Node;+]Ljava/util/concurrent/ConcurrentLinkedQueue;missing_types
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->isEmpty()Z+]Ljava/util/concurrent/ConcurrentLinkedQueue;missing_types
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->iterator()Ljava/util/Iterator;
@@ -6160,6 +6524,9 @@
 HSPLjava/util/concurrent/ConcurrentSkipListMap$Index;->casRight(Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z
 HSPLjava/util/concurrent/ConcurrentSkipListMap$Index;->link(Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z+]Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;,Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;
 HSPLjava/util/concurrent/ConcurrentSkipListMap$Index;->unlink(Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z+]Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;,Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;
+HSPLjava/util/concurrent/ConcurrentSkipListMap$Iter;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap;)V+]Ljava/util/concurrent/ConcurrentSkipListMap;Ljava/util/concurrent/ConcurrentSkipListMap;
+HSPLjava/util/concurrent/ConcurrentSkipListMap$Iter;->advance()V
+HSPLjava/util/concurrent/ConcurrentSkipListMap$Iter;->hasNext()Z
 HSPLjava/util/concurrent/ConcurrentSkipListMap$Node;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V
 HSPLjava/util/concurrent/ConcurrentSkipListMap$Node;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V
 HSPLjava/util/concurrent/ConcurrentSkipListMap$Node;->appendMarker(Ljava/util/concurrent/ConcurrentSkipListMap$Node;)Z+]Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Node;
@@ -6168,19 +6535,24 @@
 HSPLjava/util/concurrent/ConcurrentSkipListMap;-><init>()V
 HSPLjava/util/concurrent/ConcurrentSkipListMap;->casHead(Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;)Z
 HSPLjava/util/concurrent/ConcurrentSkipListMap;->cpr(Ljava/util/Comparator;Ljava/lang/Object;Ljava/lang/Object;)I+]Ljava/lang/Comparable;missing_types
+HSPLjava/util/concurrent/ConcurrentSkipListMap;->doGet(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/concurrent/ConcurrentSkipListMap;->doPut(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Node;]Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;,Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;
 HSPLjava/util/concurrent/ConcurrentSkipListMap;->doRemove(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Node;]Ljava/lang/Object;Ljava/lang/Boolean;
-HSPLjava/util/concurrent/ConcurrentSkipListMap;->findPredecessor(Ljava/lang/Object;Ljava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node;+]Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;,Ljava/util/concurrent/ConcurrentSkipListMap$Index;
+HSPLjava/util/concurrent/ConcurrentSkipListMap;->findFirst()Ljava/util/concurrent/ConcurrentSkipListMap$Node;
+HSPLjava/util/concurrent/ConcurrentSkipListMap;->findPredecessor(Ljava/lang/Object;Ljava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node;+]Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;,Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;
 HSPLjava/util/concurrent/ConcurrentSkipListMap;->initialize()V
 HSPLjava/util/concurrent/ConcurrentSkipListMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/util/concurrent/ConcurrentSkipListMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/concurrent/ConcurrentSkipListMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/concurrent/ConcurrentSkipListMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentSkipListMap;Ljava/util/concurrent/ConcurrentSkipListMap;
 HSPLjava/util/concurrent/ConcurrentSkipListMap;->tryReduceLevel()V
 HSPLjava/util/concurrent/ConcurrentSkipListSet;-><init>()V
+HSPLjava/util/concurrent/ConcurrentSkipListSet;->add(Ljava/lang/Object;)Z+]Ljava/util/concurrent/ConcurrentNavigableMap;Ljava/util/concurrent/ConcurrentSkipListMap;
 HSPLjava/util/concurrent/CopyOnWriteArrayList$COWIterator;-><init>([Ljava/lang/Object;I)V
 HSPLjava/util/concurrent/CopyOnWriteArrayList$COWIterator;->hasNext()Z
 HSPLjava/util/concurrent/CopyOnWriteArrayList$COWIterator;->next()Ljava/lang/Object;+]Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;
 HSPLjava/util/concurrent/CopyOnWriteArrayList;-><init>()V+]Ljava/util/concurrent/CopyOnWriteArrayList;missing_types
-HSPLjava/util/concurrent/CopyOnWriteArrayList;-><init>(Ljava/util/Collection;)V+]Ljava/lang/Object;missing_types]Ljava/util/Collection;missing_types]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
+HSPLjava/util/concurrent/CopyOnWriteArrayList;-><init>(Ljava/util/Collection;)V+]Ljava/lang/Object;missing_types]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Ljava/util/Collection;missing_types
+HSPLjava/util/concurrent/CopyOnWriteArrayList;-><init>([Ljava/lang/Object;)V+]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->add(ILjava/lang/Object;)V+]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z+]Ljava/util/concurrent/CopyOnWriteArrayList;missing_types
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->addAll(Ljava/util/Collection;)Z+]Ljava/lang/Object;missing_types]Ljava/util/Collection;missing_types]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
@@ -6202,7 +6574,7 @@
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->setArray([Ljava/lang/Object;)V
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->size()I+]Ljava/util/concurrent/CopyOnWriteArrayList;missing_types
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->toArray()[Ljava/lang/Object;+]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
-HSPLjava/util/concurrent/CopyOnWriteArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;+]Ljava/lang/Object;missing_types]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
+HSPLjava/util/concurrent/CopyOnWriteArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;+]Ljava/lang/Object;[Ljava/util/logging/Handler;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->toString()Ljava/lang/String;+]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
 HSPLjava/util/concurrent/CopyOnWriteArraySet;-><init>()V
 HSPLjava/util/concurrent/CopyOnWriteArraySet;->add(Ljava/lang/Object;)Z+]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
@@ -6218,7 +6590,7 @@
 HSPLjava/util/concurrent/CountDownLatch$Sync;->tryReleaseShared(I)Z+]Ljava/util/concurrent/CountDownLatch$Sync;Ljava/util/concurrent/CountDownLatch$Sync;
 HSPLjava/util/concurrent/CountDownLatch;-><init>(I)V
 HSPLjava/util/concurrent/CountDownLatch;->await()V+]Ljava/util/concurrent/CountDownLatch$Sync;Ljava/util/concurrent/CountDownLatch$Sync;
-HSPLjava/util/concurrent/CountDownLatch;->await(JLjava/util/concurrent/TimeUnit;)Z+]Ljava/util/concurrent/CountDownLatch$Sync;Ljava/util/concurrent/CountDownLatch$Sync;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$5;
+HSPLjava/util/concurrent/CountDownLatch;->await(JLjava/util/concurrent/TimeUnit;)Z+]Ljava/util/concurrent/CountDownLatch$Sync;Ljava/util/concurrent/CountDownLatch$Sync;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$5;,Ljava/util/concurrent/TimeUnit$1;
 HSPLjava/util/concurrent/CountDownLatch;->countDown()V+]Ljava/util/concurrent/CountDownLatch$Sync;Ljava/util/concurrent/CountDownLatch$Sync;
 HSPLjava/util/concurrent/CountDownLatch;->getCount()J+]Ljava/util/concurrent/CountDownLatch$Sync;Ljava/util/concurrent/CountDownLatch$Sync;
 HSPLjava/util/concurrent/DelayQueue;-><init>()V
@@ -6232,7 +6604,7 @@
 HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->isShutdown()Z+]Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/ScheduledThreadPoolExecutor;,Ljava/util/concurrent/ThreadPoolExecutor;
 HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->shutdown()V+]Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/ThreadPoolExecutor;,Ljava/util/concurrent/ScheduledThreadPoolExecutor;
 HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->shutdownNow()Ljava/util/List;+]Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/ThreadPoolExecutor;,Ljava/util/concurrent/ScheduledThreadPoolExecutor;
-HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;+]Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/ScheduledThreadPoolExecutor;,Ljava/util/concurrent/ThreadPoolExecutor;
+HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;+]Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/ThreadPoolExecutor;,Ljava/util/concurrent/ScheduledThreadPoolExecutor;
 HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;+]Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/ThreadPoolExecutor;
 HSPLjava/util/concurrent/Executors$DelegatedScheduledExecutorService;-><init>(Ljava/util/concurrent/ScheduledExecutorService;)V
 HSPLjava/util/concurrent/Executors$DelegatedScheduledExecutorService;->schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;+]Ljava/util/concurrent/ScheduledExecutorService;Ljava/util/concurrent/ScheduledThreadPoolExecutor;
@@ -6241,6 +6613,7 @@
 HSPLjava/util/concurrent/Executors$FinalizableDelegatedExecutorService;->finalize()V
 HSPLjava/util/concurrent/Executors$RunnableAdapter;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V
 HSPLjava/util/concurrent/Executors$RunnableAdapter;->call()Ljava/lang/Object;+]Ljava/lang/Runnable;missing_types
+HSPLjava/util/concurrent/Executors;->callable(Ljava/lang/Runnable;)Ljava/util/concurrent/Callable;
 HSPLjava/util/concurrent/Executors;->callable(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Callable;
 HSPLjava/util/concurrent/Executors;->defaultThreadFactory()Ljava/util/concurrent/ThreadFactory;
 HSPLjava/util/concurrent/Executors;->newCachedThreadPool()Ljava/util/concurrent/ExecutorService;
@@ -6265,7 +6638,7 @@
 HSPLjava/util/concurrent/FutureTask;->done()V
 HSPLjava/util/concurrent/FutureTask;->finishCompletion()V+]Ljava/util/concurrent/FutureTask;missing_types
 HSPLjava/util/concurrent/FutureTask;->get()Ljava/lang/Object;
-HSPLjava/util/concurrent/FutureTask;->get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$5;,Ljava/util/concurrent/TimeUnit$1;
+HSPLjava/util/concurrent/FutureTask;->get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$1;,Ljava/util/concurrent/TimeUnit$5;
 HSPLjava/util/concurrent/FutureTask;->handlePossibleCancellationInterrupt(I)V
 HSPLjava/util/concurrent/FutureTask;->isCancelled()Z
 HSPLjava/util/concurrent/FutureTask;->isDone()Z
@@ -6287,9 +6660,11 @@
 HSPLjava/util/concurrent/LinkedBlockingDeque;->offer(Ljava/lang/Object;)Z+]Ljava/util/concurrent/LinkedBlockingDeque;Ljava/util/concurrent/LinkedBlockingDeque;
 HSPLjava/util/concurrent/LinkedBlockingDeque;->offerFirst(Ljava/lang/Object;)Z+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
 HSPLjava/util/concurrent/LinkedBlockingDeque;->offerLast(Ljava/lang/Object;)Z+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
+HSPLjava/util/concurrent/LinkedBlockingDeque;->peekFirst()Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
+HSPLjava/util/concurrent/LinkedBlockingDeque;->poll()Ljava/lang/Object;+]Ljava/util/concurrent/LinkedBlockingDeque;Ljava/util/concurrent/LinkedBlockingDeque;
 HSPLjava/util/concurrent/LinkedBlockingDeque;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;+]Ljava/util/concurrent/LinkedBlockingDeque;Ljava/util/concurrent/LinkedBlockingDeque;
 HSPLjava/util/concurrent/LinkedBlockingDeque;->pollFirst()Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
-HSPLjava/util/concurrent/LinkedBlockingDeque;->pollFirst(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$1;
+HSPLjava/util/concurrent/LinkedBlockingDeque;->pollFirst(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$1;,Ljava/util/concurrent/TimeUnit$3;
 HSPLjava/util/concurrent/LinkedBlockingDeque;->size()I+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
 HSPLjava/util/concurrent/LinkedBlockingDeque;->take()Ljava/lang/Object;+]Ljava/util/concurrent/LinkedBlockingDeque;missing_types
 HSPLjava/util/concurrent/LinkedBlockingDeque;->takeFirst()Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
@@ -6305,8 +6680,8 @@
 HSPLjava/util/concurrent/LinkedBlockingQueue;->fullyLock()V+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
 HSPLjava/util/concurrent/LinkedBlockingQueue;->fullyUnlock()V+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
 HSPLjava/util/concurrent/LinkedBlockingQueue;->offer(Ljava/lang/Object;)Z+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
-HSPLjava/util/concurrent/LinkedBlockingQueue;->poll()Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
-HSPLjava/util/concurrent/LinkedBlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$1;,Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$2;,Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$6;
+HSPLjava/util/concurrent/LinkedBlockingQueue;->poll()Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
+HSPLjava/util/concurrent/LinkedBlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$1;,Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$2;,Ljava/util/concurrent/TimeUnit$6;
 HSPLjava/util/concurrent/LinkedBlockingQueue;->put(Ljava/lang/Object;)V+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLjava/util/concurrent/LinkedBlockingQueue;->signalNotEmpty()V+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
 HSPLjava/util/concurrent/LinkedBlockingQueue;->signalNotFull()V+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
@@ -6322,6 +6697,7 @@
 HSPLjava/util/concurrent/PriorityBlockingQueue;->poll()Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
 HSPLjava/util/concurrent/PriorityBlockingQueue;->put(Ljava/lang/Object;)V+]Ljava/util/concurrent/PriorityBlockingQueue;Ljava/util/concurrent/PriorityBlockingQueue;
 HSPLjava/util/concurrent/PriorityBlockingQueue;->remove(Ljava/lang/Object;)Z+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
+HSPLjava/util/concurrent/PriorityBlockingQueue;->removeAt(I)V
 HSPLjava/util/concurrent/PriorityBlockingQueue;->siftDownComparable(ILjava/lang/Object;[Ljava/lang/Object;I)V
 HSPLjava/util/concurrent/PriorityBlockingQueue;->siftDownUsingComparator(ILjava/lang/Object;[Ljava/lang/Object;ILjava/util/Comparator;)V+]Ljava/util/Comparator;Ljava/util/Collections$ReverseComparator;
 HSPLjava/util/concurrent/PriorityBlockingQueue;->siftUpComparable(ILjava/lang/Object;[Ljava/lang/Object;)V
@@ -6361,7 +6737,7 @@
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->cancel(Z)Z+]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->compareTo(Ljava/lang/Object;)I+]Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->compareTo(Ljava/util/concurrent/Delayed;)I+]Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;
-HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->getDelay(Ljava/util/concurrent/TimeUnit;)J+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$1;,Ljava/util/concurrent/TimeUnit$3;
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->getDelay(Ljava/util/concurrent/TimeUnit;)J+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$1;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->isPeriodic()Z
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->run()V+]Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->setNextRunTime()V+]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types
@@ -6377,33 +6753,34 @@
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->getExecuteExistingDelayedTasksAfterShutdownPolicy()Z
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->onShutdown()V+]Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;]Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/util/concurrent/ScheduledThreadPoolExecutor;]Ljava/util/concurrent/RunnableScheduledFuture;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->reExecutePeriodic(Ljava/util/concurrent/RunnableScheduledFuture;)V+]Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types
-HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;+]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;+]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->schedule(Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;+]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;
-HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;+]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$5;,Ljava/util/concurrent/TimeUnit$6;]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;+]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$5;,Ljava/util/concurrent/TimeUnit$6;]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->scheduleWithFixedDelay(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;+]Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/util/concurrent/ScheduledThreadPoolExecutor;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->setRemoveOnCancelPolicy(Z)V
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->shutdown()V
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->shutdownNow()Ljava/util/List;
-HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;+]Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/util/concurrent/ScheduledThreadPoolExecutor;
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;+]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;+]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(J)J
-HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(JLjava/util/concurrent/TimeUnit;)J+]Ljava/util/concurrent/TimeUnit;megamorphic_types]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(JLjava/util/concurrent/TimeUnit;)J+]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types]Ljava/util/concurrent/TimeUnit;megamorphic_types
 HSPLjava/util/concurrent/Semaphore$FairSync;-><init>(I)V
 HSPLjava/util/concurrent/Semaphore$FairSync;->tryAcquireShared(I)I+]Ljava/util/concurrent/Semaphore$FairSync;Ljava/util/concurrent/Semaphore$FairSync;
 HSPLjava/util/concurrent/Semaphore$NonfairSync;-><init>(I)V
 HSPLjava/util/concurrent/Semaphore$NonfairSync;->tryAcquireShared(I)I+]Ljava/util/concurrent/Semaphore$NonfairSync;Ljava/util/concurrent/Semaphore$NonfairSync;
 HSPLjava/util/concurrent/Semaphore$Sync;-><init>(I)V+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$NonfairSync;,Ljava/util/concurrent/Semaphore$FairSync;
 HSPLjava/util/concurrent/Semaphore$Sync;->getPermits()I+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$NonfairSync;,Ljava/util/concurrent/Semaphore$FairSync;
-HSPLjava/util/concurrent/Semaphore$Sync;->nonfairTryAcquireShared(I)I+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$NonfairSync;
-HSPLjava/util/concurrent/Semaphore$Sync;->tryReleaseShared(I)Z+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$NonfairSync;,Ljava/util/concurrent/Semaphore$FairSync;
+HSPLjava/util/concurrent/Semaphore$Sync;->nonfairTryAcquireShared(I)I+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$NonfairSync;,Ljava/util/concurrent/Semaphore$FairSync;
+HSPLjava/util/concurrent/Semaphore$Sync;->tryReleaseShared(I)Z+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$FairSync;,Ljava/util/concurrent/Semaphore$NonfairSync;
 HSPLjava/util/concurrent/Semaphore;-><init>(I)V
 HSPLjava/util/concurrent/Semaphore;-><init>(IZ)V
 HSPLjava/util/concurrent/Semaphore;->acquire()V+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$NonfairSync;,Ljava/util/concurrent/Semaphore$FairSync;
 HSPLjava/util/concurrent/Semaphore;->acquireUninterruptibly()V+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$NonfairSync;,Ljava/util/concurrent/Semaphore$FairSync;
 HSPLjava/util/concurrent/Semaphore;->availablePermits()I+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$NonfairSync;,Ljava/util/concurrent/Semaphore$FairSync;
-HSPLjava/util/concurrent/Semaphore;->release()V+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$NonfairSync;,Ljava/util/concurrent/Semaphore$FairSync;
+HSPLjava/util/concurrent/Semaphore;->release()V+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$FairSync;,Ljava/util/concurrent/Semaphore$NonfairSync;
+HSPLjava/util/concurrent/Semaphore;->release(I)V+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$NonfairSync;
 HSPLjava/util/concurrent/Semaphore;->tryAcquire()Z+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$NonfairSync;
-HSPLjava/util/concurrent/Semaphore;->tryAcquire(IJLjava/util/concurrent/TimeUnit;)Z+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$FairSync;,Ljava/util/concurrent/Semaphore$NonfairSync;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;
+HSPLjava/util/concurrent/Semaphore;->tryAcquire(IJLjava/util/concurrent/TimeUnit;)Z+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$FairSync;,Ljava/util/concurrent/Semaphore$NonfairSync;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$4;
 HSPLjava/util/concurrent/Semaphore;->tryAcquire(JLjava/util/concurrent/TimeUnit;)Z+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$NonfairSync;,Ljava/util/concurrent/Semaphore$FairSync;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;
 HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;-><init>(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->casNext(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
@@ -6411,7 +6788,7 @@
 HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryCancel()V
 HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryMatch(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
 HSPLjava/util/concurrent/SynchronousQueue$TransferStack;-><init>()V
-HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->awaitFulfill(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;ZJ)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;+]Ljava/lang/Thread;missing_types]Ljava/util/concurrent/SynchronousQueue$TransferStack;Ljava/util/concurrent/SynchronousQueue$TransferStack;]Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
+HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->awaitFulfill(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;ZJ)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;+]Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;]Ljava/lang/Thread;missing_types]Ljava/util/concurrent/SynchronousQueue$TransferStack;Ljava/util/concurrent/SynchronousQueue$TransferStack;
 HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->casHead(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
 HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->clean(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)V+]Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;]Ljava/util/concurrent/SynchronousQueue$TransferStack;Ljava/util/concurrent/SynchronousQueue$TransferStack;
 HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->isFulfilling(I)Z
@@ -6445,13 +6822,14 @@
 HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->tryRelease(I)Z+]Ljava/util/concurrent/ThreadPoolExecutor$Worker;Ljava/util/concurrent/ThreadPoolExecutor$Worker;
 HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->unlock()V+]Ljava/util/concurrent/ThreadPoolExecutor$Worker;Ljava/util/concurrent/ThreadPoolExecutor$Worker;
 HSPLjava/util/concurrent/ThreadPoolExecutor;-><init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;)V
+HSPLjava/util/concurrent/ThreadPoolExecutor;-><init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/RejectedExecutionHandler;)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;-><init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;-><init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$1;,Ljava/util/concurrent/TimeUnit$5;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->addWorker(Ljava/lang/Runnable;Z)Z+]Ljava/lang/Thread;missing_types]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/LinkedBlockingQueue;,Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;,Ljava/util/concurrent/SynchronousQueue;,Ljava/util/concurrent/PriorityBlockingQueue;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->advanceRunState(I)V+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->afterExecute(Ljava/lang/Runnable;Ljava/lang/Throwable;)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->allowCoreThreadTimeOut(Z)V
-HSPLjava/util/concurrent/ThreadPoolExecutor;->awaitTermination(JLjava/util/concurrent/TimeUnit;)Z+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$4;
+HSPLjava/util/concurrent/ThreadPoolExecutor;->awaitTermination(JLjava/util/concurrent/TimeUnit;)Z+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$3;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->beforeExecute(Ljava/lang/Thread;Ljava/lang/Runnable;)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->checkShutdownAccess()V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->compareAndDecrementWorkerCount(I)Z+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
@@ -6462,24 +6840,28 @@
 HSPLjava/util/concurrent/ThreadPoolExecutor;->ensurePrestart()V+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V+]Ljava/util/concurrent/BlockingQueue;megamorphic_types]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/util/concurrent/ThreadPoolExecutor;Ljava/util/concurrent/ThreadPoolExecutor;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->finalize()V+]Ljava/util/concurrent/ThreadPoolExecutor;missing_types
+HSPLjava/util/concurrent/ThreadPoolExecutor;->getMaximumPoolSize()I
 HSPLjava/util/concurrent/ThreadPoolExecutor;->getQueue()Ljava/util/concurrent/BlockingQueue;
+HSPLjava/util/concurrent/ThreadPoolExecutor;->getRejectedExecutionHandler()Ljava/util/concurrent/RejectedExecutionHandler;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->getTask()Ljava/lang/Runnable;+]Ljava/util/concurrent/BlockingQueue;megamorphic_types]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->getThreadFactory()Ljava/util/concurrent/ThreadFactory;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers()V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers(Z)V+]Ljava/lang/Thread;missing_types]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/concurrent/ThreadPoolExecutor$Worker;Ljava/util/concurrent/ThreadPoolExecutor$Worker;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;
-HSPLjava/util/concurrent/ThreadPoolExecutor;->interruptWorkers()V+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/concurrent/ThreadPoolExecutor$Worker;Ljava/util/concurrent/ThreadPoolExecutor$Worker;
+HSPLjava/util/concurrent/ThreadPoolExecutor;->interruptWorkers()V+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/concurrent/ThreadPoolExecutor$Worker;Ljava/util/concurrent/ThreadPoolExecutor$Worker;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->isRunning(I)Z
 HSPLjava/util/concurrent/ThreadPoolExecutor;->isRunningOrShutdown(Z)Z+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->isShutdown()Z+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->isTerminated()Z+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->onShutdown()V
+HSPLjava/util/concurrent/ThreadPoolExecutor;->prestartAllCoreThreads()I
+HSPLjava/util/concurrent/ThreadPoolExecutor;->prestartCoreThread()Z+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->processWorkerExit(Ljava/util/concurrent/ThreadPoolExecutor$Worker;Z)V+]Ljava/util/concurrent/BlockingQueue;megamorphic_types]Ljava/util/concurrent/ThreadPoolExecutor;missing_types]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->purge()V+]Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;]Ljava/util/concurrent/ThreadPoolExecutor;Ljava/util/concurrent/ScheduledThreadPoolExecutor;]Ljava/util/Iterator;Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;]Ljava/util/concurrent/Future;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->remove(Ljava/lang/Runnable;)Z+]Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;,Ljava/util/concurrent/LinkedBlockingQueue;]Ljava/util/concurrent/ThreadPoolExecutor;missing_types
 HSPLjava/util/concurrent/ThreadPoolExecutor;->runStateAtLeast(II)Z
 HSPLjava/util/concurrent/ThreadPoolExecutor;->runStateLessThan(II)Z
 HSPLjava/util/concurrent/ThreadPoolExecutor;->runStateOf(I)I
-HSPLjava/util/concurrent/ThreadPoolExecutor;->runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+]Ljava/util/concurrent/ThreadPoolExecutor;missing_types]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/util/concurrent/ThreadPoolExecutor$Worker;Ljava/util/concurrent/ThreadPoolExecutor$Worker;]Ljava/lang/Runnable;megamorphic_types]Ljava/lang/Thread;Ljava/lang/Thread;
+HSPLjava/util/concurrent/ThreadPoolExecutor;->runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+]Ljava/util/concurrent/ThreadPoolExecutor;missing_types]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/lang/Runnable;megamorphic_types]Ljava/util/concurrent/ThreadPoolExecutor$Worker;Ljava/util/concurrent/ThreadPoolExecutor$Worker;]Ljava/lang/Thread;Ljava/lang/Thread;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->setKeepAliveTime(JLjava/util/concurrent/TimeUnit;)V+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$4;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->setMaximumPoolSize(I)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->setRejectedExecutionHandler(Ljava/util/concurrent/RejectedExecutionHandler;)V
@@ -6487,16 +6869,19 @@
 HSPLjava/util/concurrent/ThreadPoolExecutor;->shutdown()V+]Ljava/util/concurrent/ThreadPoolExecutor;missing_types]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->shutdownNow()Ljava/util/List;+]Ljava/util/concurrent/ThreadPoolExecutor;missing_types]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->terminated()V
-HSPLjava/util/concurrent/ThreadPoolExecutor;->toString()Ljava/lang/String;+]Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/SynchronousQueue;,Ljava/util/concurrent/LinkedBlockingQueue;,Ljava/util/concurrent/DelayQueue;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/concurrent/ThreadPoolExecutor$Worker;Ljava/util/concurrent/ThreadPoolExecutor$Worker;
+HSPLjava/util/concurrent/ThreadPoolExecutor;->toString()Ljava/lang/String;+]Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/LinkedBlockingQueue;,Ljava/util/concurrent/SynchronousQueue;,Ljava/util/concurrent/ArrayBlockingQueue;,Ljava/util/concurrent/DelayQueue;,Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/concurrent/ThreadPoolExecutor$Worker;Ljava/util/concurrent/ThreadPoolExecutor$Worker;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->tryTerminate()V+]Ljava/util/concurrent/BlockingQueue;megamorphic_types]Ljava/util/concurrent/ThreadPoolExecutor;missing_types]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->workerCountOf(I)I
 HSPLjava/util/concurrent/TimeUnit$1;->convert(JLjava/util/concurrent/TimeUnit;)J+]Ljava/util/concurrent/TimeUnit;megamorphic_types
+HSPLjava/util/concurrent/TimeUnit$1;->excessNanos(JJ)I
+HSPLjava/util/concurrent/TimeUnit$1;->toDays(J)J
 HSPLjava/util/concurrent/TimeUnit$1;->toHours(J)J
 HSPLjava/util/concurrent/TimeUnit$1;->toMicros(J)J
 HSPLjava/util/concurrent/TimeUnit$1;->toMillis(J)J
+HSPLjava/util/concurrent/TimeUnit$1;->toMinutes(J)J
 HSPLjava/util/concurrent/TimeUnit$1;->toNanos(J)J
 HSPLjava/util/concurrent/TimeUnit$1;->toSeconds(J)J
-HSPLjava/util/concurrent/TimeUnit$2;->convert(JLjava/util/concurrent/TimeUnit;)J+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$1;,Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$2;,Ljava/util/concurrent/TimeUnit$4;
+HSPLjava/util/concurrent/TimeUnit$2;->convert(JLjava/util/concurrent/TimeUnit;)J+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$1;,Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$2;
 HSPLjava/util/concurrent/TimeUnit$2;->toMicros(J)J
 HSPLjava/util/concurrent/TimeUnit$2;->toMillis(J)J
 HSPLjava/util/concurrent/TimeUnit$2;->toNanos(J)J
@@ -6520,18 +6905,20 @@
 HSPLjava/util/concurrent/TimeUnit$5;->toMillis(J)J
 HSPLjava/util/concurrent/TimeUnit$5;->toNanos(J)J
 HSPLjava/util/concurrent/TimeUnit$5;->toSeconds(J)J
-HSPLjava/util/concurrent/TimeUnit$6;->convert(JLjava/util/concurrent/TimeUnit;)J+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$1;,Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$3;
+HSPLjava/util/concurrent/TimeUnit$6;->convert(JLjava/util/concurrent/TimeUnit;)J+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$1;,Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$4;
 HSPLjava/util/concurrent/TimeUnit$6;->toMicros(J)J
 HSPLjava/util/concurrent/TimeUnit$6;->toMillis(J)J
 HSPLjava/util/concurrent/TimeUnit$6;->toMinutes(J)J
 HSPLjava/util/concurrent/TimeUnit$6;->toNanos(J)J
 HSPLjava/util/concurrent/TimeUnit$6;->toSeconds(J)J
-HSPLjava/util/concurrent/TimeUnit$7;->convert(JLjava/util/concurrent/TimeUnit;)J+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$1;
+HSPLjava/util/concurrent/TimeUnit$7;->convert(JLjava/util/concurrent/TimeUnit;)J+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$1;,Ljava/util/concurrent/TimeUnit$3;
+HSPLjava/util/concurrent/TimeUnit$7;->toHours(J)J
 HSPLjava/util/concurrent/TimeUnit$7;->toMillis(J)J
 HSPLjava/util/concurrent/TimeUnit$7;->toMinutes(J)J
 HSPLjava/util/concurrent/TimeUnit$7;->toNanos(J)J
 HSPLjava/util/concurrent/TimeUnit$7;->toSeconds(J)J
-HSPLjava/util/concurrent/TimeUnit;->sleep(J)V+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$1;,Ljava/util/concurrent/TimeUnit$4;
+HSPLjava/util/concurrent/TimeUnit;->sleep(J)V+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$4;,Ljava/util/concurrent/TimeUnit$1;
+HSPLjava/util/concurrent/TimeUnit;->values()[Ljava/util/concurrent/TimeUnit;
 HSPLjava/util/concurrent/TimeUnit;->x(JJJ)J
 HSPLjava/util/concurrent/TimeoutException;-><init>()V
 HSPLjava/util/concurrent/TimeoutException;-><init>(Ljava/lang/String;)V
@@ -6581,7 +6968,7 @@
 HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
 HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->accessCheck(Ljava/lang/Object;)V+]Ljava/lang/Class;Ljava/lang/Class;
 HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->addAndGet(Ljava/lang/Object;J)J+]Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;
-HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->compareAndSet(Ljava/lang/Object;JJ)Z
+HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->compareAndSet(Ljava/lang/Object;JJ)Z+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
 HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->getAndAdd(Ljava/lang/Object;J)J+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
 HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->incrementAndGet(Ljava/lang/Object;)J+]Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;
 HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater;-><init>()V
@@ -6593,7 +6980,7 @@
 HSPLjava/util/concurrent/atomic/AtomicReference;->getAndSet(Ljava/lang/Object;)Ljava/lang/Object;+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
 HSPLjava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/atomic/AtomicReference;->set(Ljava/lang/Object;)V
-HSPLjava/util/concurrent/atomic/AtomicReference;->updateAndGet(Ljava/util/function/UnaryOperator;)Ljava/lang/Object;+]Ljava/util/function/UnaryOperator;Landroid/telephony/BinderCacheManager$$ExternalSyntheticLambda0;]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;
+HSPLjava/util/concurrent/atomic/AtomicReference;->updateAndGet(Ljava/util/function/UnaryOperator;)Ljava/lang/Object;+]Ljava/util/function/UnaryOperator;missing_types]Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;
 HSPLjava/util/concurrent/atomic/AtomicReferenceArray;-><init>(I)V
 HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->byteOffset(I)J
 HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->checkedByteOffset(I)J
@@ -6613,9 +7000,14 @@
 HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater;-><init>()V
 HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->newUpdater(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
 HSPLjava/util/concurrent/atomic/LongAdder;-><init>()V
-HSPLjava/util/concurrent/atomic/LongAdder;->add(J)V+]Ljava/util/concurrent/atomic/Striped64$Cell;Ljava/util/concurrent/atomic/Striped64$Cell;]Ljava/util/concurrent/atomic/LongAdder;Ljava/util/concurrent/atomic/LongAdder;
+HSPLjava/util/concurrent/atomic/LongAdder;->add(J)V+]Ljava/util/concurrent/atomic/LongAdder;Ljava/util/concurrent/atomic/LongAdder;]Ljava/util/concurrent/atomic/Striped64$Cell;Ljava/util/concurrent/atomic/Striped64$Cell;
+HSPLjava/util/concurrent/atomic/Striped64$Cell;-><clinit>()V
+HSPLjava/util/concurrent/atomic/Striped64$Cell;-><init>(J)V
 HSPLjava/util/concurrent/atomic/Striped64;-><init>()V
 HSPLjava/util/concurrent/atomic/Striped64;->casBase(JJ)Z+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
+HSPLjava/util/concurrent/atomic/Striped64;->casCellsBusy()Z
+HSPLjava/util/concurrent/atomic/Striped64;->getProbe()I
+HSPLjava/util/concurrent/atomic/Striped64;->longAccumulate(JLjava/util/function/LongBinaryOperator;Z)V
 HSPLjava/util/concurrent/locks/AbstractOwnableSynchronizer;-><init>()V
 HSPLjava/util/concurrent/locks/AbstractOwnableSynchronizer;->getExclusiveOwnerThread()Ljava/lang/Thread;
 HSPLjava/util/concurrent/locks/AbstractOwnableSynchronizer;->setExclusiveOwnerThread(Ljava/lang/Thread;)V
@@ -6628,7 +7020,7 @@
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->doSignalAll(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->reportInterruptAfterWait(I)V
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->signal()V+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantLock$FairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;
-HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->signalAll()V+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->signalAll()V+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantLock$FairSync;
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->unlinkCancelledWaiters()V
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>()V
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>(I)V
@@ -6670,7 +7062,7 @@
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->shouldParkAfterFailedAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->transferAfterCancelledWait(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->transferForSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->tryAcquireSharedNanos(IJ)Z+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/Semaphore$FairSync;,Ljava/util/concurrent/CountDownLatch$Sync;,Ljava/util/concurrent/Semaphore$NonfairSync;
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->tryAcquireSharedNanos(IJ)Z+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/CountDownLatch$Sync;,Ljava/util/concurrent/Semaphore$FairSync;,Ljava/util/concurrent/Semaphore$NonfairSync;
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->unparkSuccessor(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
 HSPLjava/util/concurrent/locks/LockSupport;->park(Ljava/lang/Object;)V+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
 HSPLjava/util/concurrent/locks/LockSupport;->parkNanos(J)V+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
@@ -6711,16 +7103,16 @@
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;->initialValue()Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;-><init>()V+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->exclusiveCount(I)I
-HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->fullTryAcquireShared(Ljava/lang/Thread;)I+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->fullTryAcquireShared(Ljava/lang/Thread;)I+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->isHeldExclusively()Z+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->sharedCount(I)I
-HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryAcquire(I)Z+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;
-HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryAcquireShared(I)I+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;
-HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryRelease(I)Z+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;
-HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryReleaseShared(I)Z+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryAcquire(I)Z+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryAcquireShared(I)I+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryRelease(I)Z+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryReleaseShared(I)Z+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;-><init>(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V
-HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->lock()V+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;
-HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->unlock()V+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->lock()V+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->unlock()V+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;-><init>()V
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;-><init>(Z)V
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->getThreadId(Ljava/lang/Thread;)J
@@ -6767,9 +7159,10 @@
 HSPLjava/util/jar/JarFile;->maybeInstantiateVerifier()V+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/jar/JarFile;Ljava/util/jar/JarFile;
 HSPLjava/util/jar/JarVerifier$3;-><init>(Ljava/util/jar/JarVerifier;)V
 HSPLjava/util/jar/JarVerifier$VerifierStream;-><init>(Ljava/util/jar/Manifest;Ljava/util/jar/JarEntry;Ljava/io/InputStream;Ljava/util/jar/JarVerifier;)V
+HSPLjava/util/jar/JarVerifier$VerifierStream;->available()I
 HSPLjava/util/jar/JarVerifier$VerifierStream;->close()V
 HSPLjava/util/jar/JarVerifier$VerifierStream;->read()I+]Ljava/io/InputStream;Ljava/util/zip/ZipFile$ZipFileInputStream;,Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;]Ljava/util/jar/JarVerifier;Ljava/util/jar/JarVerifier;
-HSPLjava/util/jar/JarVerifier$VerifierStream;->read([BII)I+]Ljava/io/InputStream;Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;,Ljava/util/zip/ZipFile$ZipFileInputStream;]Ljava/util/jar/JarVerifier;Ljava/util/jar/JarVerifier;
+HSPLjava/util/jar/JarVerifier$VerifierStream;->read([BII)I+]Ljava/io/InputStream;Ljava/util/zip/ZipFile$ZipFileInputStream;,Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;]Ljava/util/jar/JarVerifier;Ljava/util/jar/JarVerifier;
 HSPLjava/util/jar/JarVerifier;-><init>([B)V
 HSPLjava/util/jar/JarVerifier;->beginEntry(Ljava/util/jar/JarEntry;Lsun/security/util/ManifestEntryVerifier;)V
 HSPLjava/util/jar/JarVerifier;->doneWithMeta()V
@@ -6793,14 +7186,39 @@
 HSPLjava/util/jar/Manifest;->read(Ljava/io/InputStream;)V+]Ljava/util/jar/Attributes;Ljava/util/jar/Attributes;]Ljava/util/jar/Manifest;Ljava/util/jar/Manifest;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/jar/Manifest$FastInputStream;Ljava/util/jar/Manifest$FastInputStream;
 HSPLjava/util/jar/Manifest;->toLower(I)I
 HSPLjava/util/logging/ErrorManager;-><init>()V
+HSPLjava/util/logging/FileHandler$1;-><init>(Ljava/util/logging/FileHandler;)V
+HSPLjava/util/logging/FileHandler$1;->run()Ljava/lang/Object;
+HSPLjava/util/logging/FileHandler$InitializationErrorManager;-><init>()V
+HSPLjava/util/logging/FileHandler$InitializationErrorManager;-><init>(Ljava/util/logging/FileHandler$1;)V
+HSPLjava/util/logging/FileHandler$MeteredStream;-><init>(Ljava/util/logging/FileHandler;Ljava/io/OutputStream;I)V
+HSPLjava/util/logging/FileHandler$MeteredStream;->close()V
+HSPLjava/util/logging/FileHandler$MeteredStream;->flush()V+]Ljava/io/OutputStream;Ljava/io/BufferedOutputStream;
+HSPLjava/util/logging/FileHandler$MeteredStream;->write([BII)V+]Ljava/io/OutputStream;Ljava/io/BufferedOutputStream;
+HSPLjava/util/logging/FileHandler;-><clinit>()V
+HSPLjava/util/logging/FileHandler;-><init>(Ljava/lang/String;IIZ)V
+HSPLjava/util/logging/FileHandler;->access$100(Ljava/util/logging/FileHandler;)V
+HSPLjava/util/logging/FileHandler;->configure()V
+HSPLjava/util/logging/FileHandler;->generate(Ljava/lang/String;II)Ljava/io/File;
+HSPLjava/util/logging/FileHandler;->isParentWritable(Ljava/nio/file/Path;)Z
+HSPLjava/util/logging/FileHandler;->open(Ljava/io/File;Z)V
+HSPLjava/util/logging/FileHandler;->openFiles()V
+HSPLjava/util/logging/FileHandler;->publish(Ljava/util/logging/LogRecord;)V+]Ljava/util/logging/FileHandler;Ljava/util/logging/FileHandler;
+HSPLjava/util/logging/FileHandler;->rotate()V
 HSPLjava/util/logging/Formatter;-><init>()V
+HSPLjava/util/logging/Formatter;->getHead(Ljava/util/logging/Handler;)Ljava/lang/String;
+HSPLjava/util/logging/Formatter;->getTail(Ljava/util/logging/Handler;)Ljava/lang/String;
 HSPLjava/util/logging/Handler;-><init>()V
 HSPLjava/util/logging/Handler;->checkPermission()V+]Ljava/util/logging/LogManager;Ljava/util/logging/LogManager;
+HSPLjava/util/logging/Handler;->getEncoding()Ljava/lang/String;
 HSPLjava/util/logging/Handler;->getFilter()Ljava/util/logging/Filter;
 HSPLjava/util/logging/Handler;->getFormatter()Ljava/util/logging/Formatter;
 HSPLjava/util/logging/Handler;->getLevel()Ljava/util/logging/Level;
 HSPLjava/util/logging/Handler;->isLoggable(Ljava/util/logging/LogRecord;)Z+]Ljava/util/logging/Handler;Ljava/util/logging/FileHandler;]Ljava/util/logging/Level;Ljava/util/logging/Level;]Ljava/util/logging/LogRecord;Ljava/util/logging/LogRecord;
+HSPLjava/util/logging/Handler;->setEncoding(Ljava/lang/String;)V
+HSPLjava/util/logging/Handler;->setErrorManager(Ljava/util/logging/ErrorManager;)V
+HSPLjava/util/logging/Handler;->setFilter(Ljava/util/logging/Filter;)V
 HSPLjava/util/logging/Handler;->setFormatter(Ljava/util/logging/Formatter;)V
+HSPLjava/util/logging/Handler;->setLevel(Ljava/util/logging/Level;)V
 HSPLjava/util/logging/Level;->equals(Ljava/lang/Object;)Z
 HSPLjava/util/logging/Level;->intValue()I
 HSPLjava/util/logging/LogManager$5;-><init>(Ljava/util/logging/LogManager;Ljava/lang/String;Ljava/util/logging/Logger;)V
@@ -6814,16 +7232,16 @@
 HSPLjava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;Z)Z+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/LogManager$SystemLoggerContext;,Ljava/util/logging/LogManager$LoggerContext;]Ljava/util/logging/LogManager$LogNode;Ljava/util/logging/LogManager$LogNode;]Ljava/util/Hashtable;Ljava/util/Hashtable;]Ljava/util/logging/Logger;Ljava/util/logging/Logger;]Ljava/util/logging/LogManager;Ljava/util/logging/LogManager;]Ljava/util/logging/LogManager$LoggerWeakRef;Ljava/util/logging/LogManager$LoggerWeakRef;
 HSPLjava/util/logging/LogManager$LoggerContext;->ensureAllDefaultLoggers(Ljava/util/logging/Logger;)V+]Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/LogManager$SystemLoggerContext;,Ljava/util/logging/LogManager$LoggerContext;]Ljava/util/logging/Logger;Ljava/util/logging/Logger;
 HSPLjava/util/logging/LogManager$LoggerContext;->ensureDefaultLogger(Ljava/util/logging/Logger;)V+]Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/LogManager$SystemLoggerContext;,Ljava/util/logging/LogManager$LoggerContext;]Ljava/util/Hashtable;Ljava/util/Hashtable;]Ljava/util/logging/Logger;Ljava/util/logging/LogManager$RootLogger;,Ljava/util/logging/Logger;
-HSPLjava/util/logging/LogManager$LoggerContext;->ensureInitialized()V+]Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/LogManager$SystemLoggerContext;,Ljava/util/logging/LogManager$LoggerContext;
+HSPLjava/util/logging/LogManager$LoggerContext;->ensureInitialized()V+]Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/LogManager$LoggerContext;,Ljava/util/logging/LogManager$SystemLoggerContext;
 HSPLjava/util/logging/LogManager$LoggerContext;->findLogger(Ljava/lang/String;)Ljava/util/logging/Logger;+]Ljava/util/Hashtable;Ljava/util/Hashtable;]Ljava/util/logging/LogManager$LoggerWeakRef;Ljava/util/logging/LogManager$LoggerWeakRef;
 HSPLjava/util/logging/LogManager$LoggerContext;->getGlobalLogger()Ljava/util/logging/Logger;
 HSPLjava/util/logging/LogManager$LoggerContext;->getLoggerNames()Ljava/util/Enumeration;
 HSPLjava/util/logging/LogManager$LoggerContext;->getNode(Ljava/lang/String;)Ljava/util/logging/LogManager$LogNode;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/util/logging/LogManager$LoggerContext;->getOwner()Ljava/util/logging/LogManager;
-HSPLjava/util/logging/LogManager$LoggerContext;->getRootLogger()Ljava/util/logging/Logger;+]Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/LogManager$SystemLoggerContext;,Ljava/util/logging/LogManager$LoggerContext;
+HSPLjava/util/logging/LogManager$LoggerContext;->getRootLogger()Ljava/util/logging/Logger;+]Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/LogManager$LoggerContext;,Ljava/util/logging/LogManager$SystemLoggerContext;
 HSPLjava/util/logging/LogManager$LoggerContext;->processParentHandlers(Ljava/util/logging/Logger;Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/LogManager$LoggerContext;,Ljava/util/logging/LogManager$SystemLoggerContext;]Ljava/util/logging/LogManager;Ljava/util/logging/LogManager;
 HSPLjava/util/logging/LogManager$LoggerContext;->removeLoggerRef(Ljava/lang/String;Ljava/util/logging/LogManager$LoggerWeakRef;)V+]Ljava/util/Hashtable;Ljava/util/Hashtable;
-HSPLjava/util/logging/LogManager$LoggerContext;->requiresDefaultLoggers()Z+]Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/LogManager$SystemLoggerContext;,Ljava/util/logging/LogManager$LoggerContext;]Ljava/util/logging/LogManager;Ljava/util/logging/LogManager;
+HSPLjava/util/logging/LogManager$LoggerContext;->requiresDefaultLoggers()Z+]Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/LogManager$LoggerContext;,Ljava/util/logging/LogManager$SystemLoggerContext;]Ljava/util/logging/LogManager;Ljava/util/logging/LogManager;
 HSPLjava/util/logging/LogManager$LoggerWeakRef;-><init>(Ljava/util/logging/LogManager;Ljava/util/logging/Logger;)V+]Ljava/util/logging/Logger;Ljava/util/logging/Logger;
 HSPLjava/util/logging/LogManager$LoggerWeakRef;->dispose()V+]Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/LogManager$SystemLoggerContext;,Ljava/util/logging/LogManager$LoggerContext;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/logging/Logger;Ljava/util/logging/LogManager$RootLogger;
 HSPLjava/util/logging/LogManager$LoggerWeakRef;->setNode(Ljava/util/logging/LogManager$LogNode;)V
@@ -6846,10 +7264,14 @@
 HSPLjava/util/logging/LogManager;->drainLoggerRefQueueBounded()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue;]Ljava/util/logging/LogManager$LoggerWeakRef;Ljava/util/logging/LogManager$LoggerWeakRef;
 HSPLjava/util/logging/LogManager;->ensureLogManagerInitialized()V
 HSPLjava/util/logging/LogManager;->getBooleanProperty(Ljava/lang/String;Z)Z+]Ljava/util/logging/LogManager;Ljava/util/logging/LogManager;
+HSPLjava/util/logging/LogManager;->getFilterProperty(Ljava/lang/String;Ljava/util/logging/Filter;)Ljava/util/logging/Filter;
+HSPLjava/util/logging/LogManager;->getFormatterProperty(Ljava/lang/String;Ljava/util/logging/Formatter;)Ljava/util/logging/Formatter;
+HSPLjava/util/logging/LogManager;->getIntProperty(Ljava/lang/String;I)I
 HSPLjava/util/logging/LogManager;->getLevelProperty(Ljava/lang/String;Ljava/util/logging/Level;)Ljava/util/logging/Level;+]Ljava/util/logging/LogManager;Ljava/util/logging/LogManager;
 HSPLjava/util/logging/LogManager;->getLogManager()Ljava/util/logging/LogManager;+]Ljava/util/logging/LogManager;Ljava/util/logging/LogManager;
 HSPLjava/util/logging/LogManager;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;+]Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/LogManager$LoggerContext;
 HSPLjava/util/logging/LogManager;->getProperty(Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Properties;Ljava/util/Properties;
+HSPLjava/util/logging/LogManager;->getStringProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/util/logging/LogManager;->getSystemContext()Ljava/util/logging/LogManager$LoggerContext;
 HSPLjava/util/logging/LogManager;->getUserContext()Ljava/util/logging/LogManager$LoggerContext;
 HSPLjava/util/logging/LogManager;->initializeGlobalHandlers()V
@@ -6864,6 +7286,7 @@
 HSPLjava/util/logging/LogRecord;->getMessage()Ljava/lang/String;
 HSPLjava/util/logging/LogRecord;->getThrown()Ljava/lang/Throwable;
 HSPLjava/util/logging/LogRecord;->setLoggerName(Ljava/lang/String;)V
+HSPLjava/util/logging/LogRecord;->setParameters([Ljava/lang/Object;)V
 HSPLjava/util/logging/LogRecord;->setSourceClassName(Ljava/lang/String;)V
 HSPLjava/util/logging/LogRecord;->setSourceMethodName(Ljava/lang/String;)V
 HSPLjava/util/logging/LogRecord;->setThrown(Ljava/lang/Throwable;)V
@@ -6894,7 +7317,7 @@
 HSPLjava/util/logging/Logger;->getUseParentHandlers()Z
 HSPLjava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z+]Ljava/util/logging/Level;Ljava/util/logging/Level;
 HSPLjava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V+]Ljava/util/logging/Logger;Ljava/util/logging/Logger;
-HSPLjava/util/logging/Logger;->log(Ljava/util/logging/LogRecord;)V+]Ljava/util/logging/Handler;missing_types]Ljava/util/logging/LogRecord;Ljava/util/logging/LogRecord;]Ljava/util/logging/Logger;Ljava/util/logging/LogManager$RootLogger;,Ljava/util/logging/Logger;
+HSPLjava/util/logging/Logger;->log(Ljava/util/logging/LogRecord;)V+]Ljava/util/logging/Handler;missing_types]Ljava/util/logging/LogRecord;Ljava/util/logging/LogRecord;]Ljava/util/logging/Logger;Ljava/util/logging/Logger;,Ljava/util/logging/LogManager$RootLogger;
 HSPLjava/util/logging/Logger;->logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/util/logging/LogRecord;Ljava/util/logging/LogRecord;]Ljava/util/logging/Logger;Ljava/util/logging/Logger;
 HSPLjava/util/logging/Logger;->logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V+]Ljava/util/logging/Logger;Ljava/util/logging/Logger;]Ljava/util/logging/LogRecord;Ljava/util/logging/LogRecord;
 HSPLjava/util/logging/Logger;->logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V+]Ljava/util/logging/Logger;Ljava/util/logging/Logger;]Ljava/util/logging/LogRecord;Ljava/util/logging/LogRecord;
@@ -6907,6 +7330,19 @@
 HSPLjava/util/logging/Logger;->setupResourceInfo(Ljava/lang/String;Ljava/lang/Class;)V
 HSPLjava/util/logging/Logger;->updateEffectiveLevel()V+]Ljava/util/logging/Level;Ljava/util/logging/Level;
 HSPLjava/util/logging/LoggingProxyImpl;->getLogger(Ljava/lang/String;)Ljava/lang/Object;
+HSPLjava/util/logging/LoggingProxyImpl;->getProperty(Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/util/logging/SimpleFormatter;-><clinit>()V
+HSPLjava/util/logging/SimpleFormatter;-><init>()V
+HSPLjava/util/logging/StreamHandler;-><init>()V
+HSPLjava/util/logging/StreamHandler;->close()V
+HSPLjava/util/logging/StreamHandler;->configure()V
+HSPLjava/util/logging/StreamHandler;->flush()V+]Ljava/io/Writer;Ljava/io/OutputStreamWriter;
+HSPLjava/util/logging/StreamHandler;->flushAndClose()V
+HSPLjava/util/logging/StreamHandler;->isLoggable(Ljava/util/logging/LogRecord;)Z
+HSPLjava/util/logging/StreamHandler;->publish(Ljava/util/logging/LogRecord;)V+]Ljava/io/Writer;Ljava/io/OutputStreamWriter;]Ljava/util/logging/StreamHandler;Ljava/util/logging/FileHandler;
+HSPLjava/util/logging/StreamHandler;->setEncoding(Ljava/lang/String;)V
+HSPLjava/util/logging/StreamHandler;->setOutputStream(Ljava/io/OutputStream;)V
+HSPLjava/util/logging/XMLFormatter;-><init>()V
 HSPLjava/util/regex/Matcher;-><init>(Ljava/util/regex/Pattern;Ljava/lang/CharSequence;)V+]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
 HSPLjava/util/regex/Matcher;->appendEvaluated(Ljava/lang/StringBuffer;Ljava/lang/String;)V+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/util/regex/Matcher;->appendReplacement(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
@@ -6915,27 +7351,28 @@
 HSPLjava/util/regex/Matcher;->end(I)I+]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
 HSPLjava/util/regex/Matcher;->ensureMatch()V
 HSPLjava/util/regex/Matcher;->find()Z+]Lcom/android/icu/util/regex/MatcherNative;Lcom/android/icu/util/regex/MatcherNative;
-HSPLjava/util/regex/Matcher;->find(I)Z+]Lcom/android/icu/util/regex/MatcherNative;Lcom/android/icu/util/regex/MatcherNative;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
+HSPLjava/util/regex/Matcher;->find(I)Z+]Lcom/android/icu/util/regex/MatcherNative;missing_types]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
 HSPLjava/util/regex/Matcher;->getSubSequence(II)Ljava/lang/CharSequence;+]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/util/regex/Matcher;->getTextLength()I
 HSPLjava/util/regex/Matcher;->group()Ljava/lang/String;+]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
 HSPLjava/util/regex/Matcher;->group(I)Ljava/lang/String;+]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
-HSPLjava/util/regex/Matcher;->groupCount()I+]Lcom/android/icu/util/regex/MatcherNative;Lcom/android/icu/util/regex/MatcherNative;
-HSPLjava/util/regex/Matcher;->hitEnd()Z+]Lcom/android/icu/util/regex/MatcherNative;Lcom/android/icu/util/regex/MatcherNative;
-HSPLjava/util/regex/Matcher;->lookingAt()Z+]Lcom/android/icu/util/regex/MatcherNative;Lcom/android/icu/util/regex/MatcherNative;
-HSPLjava/util/regex/Matcher;->matches()Z+]Lcom/android/icu/util/regex/MatcherNative;Lcom/android/icu/util/regex/MatcherNative;
+HSPLjava/util/regex/Matcher;->groupCount()I+]Lcom/android/icu/util/regex/MatcherNative;missing_types
+HSPLjava/util/regex/Matcher;->hitEnd()Z+]Lcom/android/icu/util/regex/MatcherNative;missing_types
+HSPLjava/util/regex/Matcher;->lookingAt()Z+]Lcom/android/icu/util/regex/MatcherNative;missing_types
+HSPLjava/util/regex/Matcher;->matches()Z+]Lcom/android/icu/util/regex/MatcherNative;missing_types
+HSPLjava/util/regex/Matcher;->pattern()Ljava/util/regex/Pattern;
 HSPLjava/util/regex/Matcher;->region(II)Ljava/util/regex/Matcher;
 HSPLjava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
-HSPLjava/util/regex/Matcher;->replaceFirst(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
-HSPLjava/util/regex/Matcher;->reset()Ljava/util/regex/Matcher;+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder;,Landroid/text/SpannedString;,Landroid/text/SpannableStringBuilder;,Landroid/text/SpannableString;
+HSPLjava/util/regex/Matcher;->replaceFirst(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/lang/String;Ljava/lang/String;
+HSPLjava/util/regex/Matcher;->reset()Ljava/util/regex/Matcher;+]Ljava/lang/CharSequence;missing_types
 HSPLjava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;+]Ljava/lang/CharSequence;megamorphic_types
 HSPLjava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;II)Ljava/util/regex/Matcher;+]Ljava/lang/CharSequence;megamorphic_types
 HSPLjava/util/regex/Matcher;->resetForInput()V+]Lcom/android/icu/util/regex/MatcherNative;Lcom/android/icu/util/regex/MatcherNative;
 HSPLjava/util/regex/Matcher;->start()I+]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
 HSPLjava/util/regex/Matcher;->start(I)I+]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
-HSPLjava/util/regex/Matcher;->useAnchoringBounds(Z)Ljava/util/regex/Matcher;+]Lcom/android/icu/util/regex/MatcherNative;Lcom/android/icu/util/regex/MatcherNative;
+HSPLjava/util/regex/Matcher;->useAnchoringBounds(Z)Ljava/util/regex/Matcher;+]Lcom/android/icu/util/regex/MatcherNative;missing_types
 HSPLjava/util/regex/Matcher;->usePattern(Ljava/util/regex/Pattern;)Ljava/util/regex/Matcher;+]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;
-HSPLjava/util/regex/Matcher;->useTransparentBounds(Z)Ljava/util/regex/Matcher;+]Lcom/android/icu/util/regex/MatcherNative;Lcom/android/icu/util/regex/MatcherNative;
+HSPLjava/util/regex/Matcher;->useTransparentBounds(Z)Ljava/util/regex/Matcher;+]Lcom/android/icu/util/regex/MatcherNative;missing_types
 HSPLjava/util/regex/Pattern;-><init>(Ljava/lang/String;I)V
 HSPLjava/util/regex/Pattern;->compile()V
 HSPLjava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
@@ -6946,7 +7383,7 @@
 HSPLjava/util/regex/Pattern;->pattern()Ljava/lang/String;
 HSPLjava/util/regex/Pattern;->quote(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/util/regex/Pattern;->split(Ljava/lang/CharSequence;)[Ljava/lang/String;+]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;
-HSPLjava/util/regex/Pattern;->split(Ljava/lang/CharSequence;I)[Ljava/lang/String;+]Ljava/util/List;Ljava/util/ArrayList$SubList;]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLjava/util/regex/Pattern;->split(Ljava/lang/CharSequence;I)[Ljava/lang/String;+]Ljava/util/List;Ljava/util/ArrayList$SubList;]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ldalvik/system/VMRuntime;missing_types
 HSPLjava/util/regex/Pattern;->toString()Ljava/lang/String;
 HSPLjava/util/stream/AbstractPipeline;-><init>(Ljava/util/Spliterator;IZ)V
 HSPLjava/util/stream/AbstractPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V+]Ljava/util/stream/AbstractPipeline;megamorphic_types
@@ -6964,16 +7401,27 @@
 HSPLjava/util/stream/AbstractPipeline;->sequential()Ljava/util/stream/BaseStream;
 HSPLjava/util/stream/AbstractPipeline;->sourceSpliterator(I)Ljava/util/Spliterator;+]Ljava/util/stream/AbstractPipeline;megamorphic_types]Ljava/util/function/Supplier;Ljava/lang/CharSequence$$ExternalSyntheticLambda0;
 HSPLjava/util/stream/AbstractPipeline;->sourceStageSpliterator()Ljava/util/Spliterator;
-HSPLjava/util/stream/AbstractPipeline;->spliterator()Ljava/util/Spliterator;
+HSPLjava/util/stream/AbstractPipeline;->spliterator()Ljava/util/Spliterator;+]Ljava/util/stream/AbstractPipeline;Ljava/util/stream/IntPipeline$4;,Ljava/util/stream/SliceOps$1;,Ljava/util/stream/ReferencePipeline$3;
 HSPLjava/util/stream/AbstractPipeline;->wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+]Ljava/util/stream/AbstractPipeline;megamorphic_types
 HSPLjava/util/stream/AbstractPipeline;->wrapSink(Ljava/util/stream/Sink;)Ljava/util/stream/Sink;+]Ljava/util/stream/AbstractPipeline;megamorphic_types
 HSPLjava/util/stream/AbstractSpinedBuffer;-><init>()V
 HSPLjava/util/stream/AbstractSpinedBuffer;->count()J
 HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda20;->accept(Ljava/lang/Object;Ljava/lang/Object;)V+]Ljava/util/List;Ljava/util/ArrayList;
+HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda21;-><clinit>()V
+HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda21;-><init>()V
+HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda21;->accept(Ljava/lang/Object;Ljava/lang/Object;)V+]Ljava/util/Set;Ljava/util/HashSet;
 HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda22;->accept(Ljava/lang/Object;Ljava/lang/Object;)V+]Ljava/util/StringJoiner;Ljava/util/StringJoiner;
+HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda26;-><init>(Ljava/util/function/BinaryOperator;)V
+HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda36;-><clinit>()V
+HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda36;-><init>()V
 HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda54;->apply(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/StringJoiner;Ljava/util/StringJoiner;
+HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda66;-><init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V
 HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda66;->get()Ljava/lang/Object;
 HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda77;->get()Ljava/lang/Object;
+HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda79;->get()Ljava/lang/Object;
+HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda80;-><clinit>()V
+HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda80;-><init>()V
+HSPLjava/util/stream/Collectors$$ExternalSyntheticLambda80;->get()Ljava/lang/Object;
 HSPLjava/util/stream/Collectors$CollectorImpl;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/Set;)V
 HSPLjava/util/stream/Collectors$CollectorImpl;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/function/Function;Ljava/util/Set;)V
 HSPLjava/util/stream/Collectors$CollectorImpl;->accumulator()Ljava/util/function/BiConsumer;
@@ -6983,7 +7431,9 @@
 HSPLjava/util/stream/Collectors$CollectorImpl;->supplier()Ljava/util/function/Supplier;
 HSPLjava/util/stream/Collectors;->access$000()Ljava/util/function/Function;
 HSPLjava/util/stream/Collectors;->castingIdentity()Ljava/util/function/Function;
+HSPLjava/util/stream/Collectors;->groupingBy(Ljava/util/function/Function;)Ljava/util/stream/Collector;
 HSPLjava/util/stream/Collectors;->groupingBy(Ljava/util/function/Function;Ljava/util/function/Supplier;Ljava/util/stream/Collector;)Ljava/util/stream/Collector;+]Ljava/util/stream/Collector;Ljava/util/stream/Collectors$CollectorImpl;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
+HSPLjava/util/stream/Collectors;->groupingBy(Ljava/util/function/Function;Ljava/util/stream/Collector;)Ljava/util/stream/Collector;
 HSPLjava/util/stream/Collectors;->joining(Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
 HSPLjava/util/stream/Collectors;->joining(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
 HSPLjava/util/stream/Collectors;->lambda$joining$6(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
@@ -6995,7 +7445,7 @@
 HSPLjava/util/stream/Collectors;->toMap(Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/BinaryOperator;Ljava/util/function/Supplier;)Ljava/util/stream/Collector;
 HSPLjava/util/stream/Collectors;->toSet()Ljava/util/stream/Collector;
 HSPLjava/util/stream/DistinctOps$1$2;-><init>(Ljava/util/stream/DistinctOps$1;Ljava/util/stream/Sink;)V
-HSPLjava/util/stream/DistinctOps$1$2;->accept(Ljava/lang/Object;)V+]Ljava/util/stream/Sink;Ljava/util/stream/ReferencePipeline$4$1;,Ljava/util/stream/ReduceOps$3ReducingSink;,Ljava/util/stream/Nodes$SpinedNodeBuilder;]Ljava/util/Set;Ljava/util/HashSet;
+HSPLjava/util/stream/DistinctOps$1$2;->accept(Ljava/lang/Object;)V+]Ljava/util/stream/Sink;Ljava/util/stream/Nodes$SpinedNodeBuilder;,Ljava/util/stream/ReferencePipeline$4$1;,Ljava/util/stream/ReduceOps$3ReducingSink;,Ljava/util/stream/ReferencePipeline$5$1;]Ljava/util/Set;Ljava/util/HashSet;
 HSPLjava/util/stream/DistinctOps$1$2;->begin(J)V+]Ljava/util/stream/Sink;Ljava/util/stream/ReduceOps$3ReducingSink;,Ljava/util/stream/Nodes$SpinedNodeBuilder;,Ljava/util/stream/ReferencePipeline$4$1;,Ljava/util/stream/ReferencePipeline$5$1;
 HSPLjava/util/stream/DistinctOps$1$2;->end()V+]Ljava/util/stream/Sink;Ljava/util/stream/ReduceOps$3ReducingSink;,Ljava/util/stream/Nodes$SpinedNodeBuilder;,Ljava/util/stream/ReferencePipeline$4$1;,Ljava/util/stream/ReferencePipeline$5$1;
 HSPLjava/util/stream/DistinctOps$1;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
@@ -7019,20 +7469,20 @@
 HSPLjava/util/stream/FindOps$FindSink;->cancellationRequested()Z
 HSPLjava/util/stream/FindOps;->makeRef(Z)Ljava/util/stream/TerminalOp;
 HSPLjava/util/stream/ForEachOps$ForEachOp$OfRef;-><init>(Ljava/util/function/Consumer;Z)V
-HSPLjava/util/stream/ForEachOps$ForEachOp$OfRef;->accept(Ljava/lang/Object;)V
+HSPLjava/util/stream/ForEachOps$ForEachOp$OfRef;->accept(Ljava/lang/Object;)V+]Ljava/util/function/Consumer;missing_types
 HSPLjava/util/stream/ForEachOps$ForEachOp;-><init>(Z)V
 HSPLjava/util/stream/ForEachOps$ForEachOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+]Ljava/util/stream/ForEachOps$ForEachOp;Ljava/util/stream/ForEachOps$ForEachOp$OfRef;,Ljava/util/stream/ForEachOps$ForEachOp$OfInt;
-HSPLjava/util/stream/ForEachOps$ForEachOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+]Ljava/util/stream/PipelineHelper;Ljava/util/stream/ReferencePipeline$7;,Ljava/util/stream/ReferencePipeline$2;,Ljava/util/stream/ReferencePipeline$3;,Ljava/util/stream/SortedOps$OfRef;,Ljava/util/stream/IntPipeline$9;,Ljava/util/stream/IntPipeline$4;]Ljava/util/stream/ForEachOps$ForEachOp;Ljava/util/stream/ForEachOps$ForEachOp$OfRef;,Ljava/util/stream/ForEachOps$ForEachOp$OfInt;
+HSPLjava/util/stream/ForEachOps$ForEachOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+]Ljava/util/stream/PipelineHelper;Ljava/util/stream/ReferencePipeline$3;,Ljava/util/stream/ReferencePipeline$2;,Ljava/util/stream/ReferencePipeline$7;,Ljava/util/stream/IntPipeline$9;,Ljava/util/stream/SortedOps$OfRef;,Ljava/util/stream/IntPipeline$4;]Ljava/util/stream/ForEachOps$ForEachOp;Ljava/util/stream/ForEachOps$ForEachOp$OfRef;,Ljava/util/stream/ForEachOps$ForEachOp$OfInt;
 HSPLjava/util/stream/ForEachOps$ForEachOp;->get()Ljava/lang/Void;
 HSPLjava/util/stream/ForEachOps$ForEachOp;->getOpFlags()I
 HSPLjava/util/stream/ForEachOps;->makeRef(Ljava/util/function/Consumer;Z)Ljava/util/stream/TerminalOp;
 HSPLjava/util/stream/IntPipeline$$ExternalSyntheticLambda7;->apply(I)Ljava/lang/Object;
 HSPLjava/util/stream/IntPipeline$4$1;-><init>(Ljava/util/stream/IntPipeline$4;Ljava/util/stream/Sink;)V
-HSPLjava/util/stream/IntPipeline$4$1;->accept(I)V+]Ljava/util/function/IntFunction;megamorphic_types]Ljava/util/stream/Sink;Ljava/util/stream/ReduceOps$3ReducingSink;,Ljava/util/stream/DistinctOps$1$2;,Ljava/util/stream/ForEachOps$ForEachOp$OfRef;,Ljava/util/stream/ReferencePipeline$2$1;
+HSPLjava/util/stream/IntPipeline$4$1;->accept(I)V+]Ljava/util/function/IntFunction;megamorphic_types]Ljava/util/stream/Sink;Ljava/util/stream/ReduceOps$3ReducingSink;,Ljava/util/stream/DistinctOps$1$2;,Ljava/util/stream/ReferencePipeline$2$1;,Ljava/util/stream/StreamSpliterators$WrappingSpliterator$$ExternalSyntheticLambda2;,Ljava/util/stream/ForEachOps$ForEachOp$OfRef;
 HSPLjava/util/stream/IntPipeline$4;-><init>(Ljava/util/stream/IntPipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/IntFunction;)V
 HSPLjava/util/stream/IntPipeline$4;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
 HSPLjava/util/stream/IntPipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
-HSPLjava/util/stream/IntPipeline$Head;->forEach(Ljava/util/function/IntConsumer;)V+]Ljava/util/stream/IntPipeline$Head;Ljava/util/stream/IntPipeline$Head;]Ljava/util/Spliterator$OfInt;Ljava/util/stream/Streams$RangeIntSpliterator;,Ljava/util/Spliterators$EmptySpliterator$OfInt;,Ljava/util/Spliterators$IntArraySpliterator;
+HSPLjava/util/stream/IntPipeline$Head;->forEach(Ljava/util/function/IntConsumer;)V+]Ljava/util/stream/IntPipeline$Head;Ljava/util/stream/IntPipeline$Head;]Ljava/util/Spliterator$OfInt;Ljava/util/stream/Streams$RangeIntSpliterator;,Ljava/util/Spliterators$EmptySpliterator$OfInt;,Ljava/util/stream/Streams$IntStreamBuilderImpl;,Ljava/util/Spliterators$IntArraySpliterator;
 HSPLjava/util/stream/IntPipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
 HSPLjava/util/stream/IntPipeline$StatelessOp;->opIsStateful()Z
 HSPLjava/util/stream/IntPipeline;-><init>(Ljava/util/Spliterator;IZ)V
@@ -7041,19 +7491,27 @@
 HSPLjava/util/stream/IntPipeline;->adapt(Ljava/util/Spliterator;)Ljava/util/Spliterator$OfInt;
 HSPLjava/util/stream/IntPipeline;->adapt(Ljava/util/stream/Sink;)Ljava/util/function/IntConsumer;
 HSPLjava/util/stream/IntPipeline;->allMatch(Ljava/util/function/IntPredicate;)Z+]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/util/stream/IntPipeline;Ljava/util/stream/IntPipeline$Head;
-HSPLjava/util/stream/IntPipeline;->boxed()Ljava/util/stream/Stream;+]Ljava/util/stream/IntPipeline;Ljava/util/stream/IntPipeline$Head;,Ljava/util/stream/ReferencePipeline$4;
+HSPLjava/util/stream/IntPipeline;->boxed()Ljava/util/stream/Stream;+]Ljava/util/stream/IntPipeline;Ljava/util/stream/IntPipeline$Head;,Ljava/util/stream/ReferencePipeline$4;,Ljava/util/stream/IntPipeline$9;,Ljava/util/stream/IntPipeline$3;
 HSPLjava/util/stream/IntPipeline;->distinct()Ljava/util/stream/IntStream;+]Ljava/util/stream/Stream;Ljava/util/stream/DistinctOps$1;,Ljava/util/stream/IntPipeline$4;]Ljava/util/stream/IntPipeline;Ljava/util/stream/ReferencePipeline$4;
-HSPLjava/util/stream/IntPipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V+]Ljava/util/Spliterator$OfInt;Ljava/util/Spliterators$IntArraySpliterator;,Ljava/util/stream/Streams$RangeIntSpliterator;,Ljava/util/Spliterators$EmptySpliterator$OfInt;,Ljava/util/Spliterators$IntIteratorSpliterator;]Ljava/util/stream/Sink;Ljava/util/stream/MatchOps$2MatchSink;,Ljava/util/stream/IntPipeline$9$1;
+HSPLjava/util/stream/IntPipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V+]Ljava/util/Spliterator$OfInt;Ljava/util/Spliterators$IntArraySpliterator;,Ljava/util/Spliterators$EmptySpliterator$OfInt;,Ljava/util/stream/Streams$RangeIntSpliterator;,Ljava/util/Spliterators$IntIteratorSpliterator;]Ljava/util/stream/Sink;Ljava/util/stream/MatchOps$2MatchSink;,Ljava/util/stream/IntPipeline$9$1;
 HSPLjava/util/stream/IntPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
 HSPLjava/util/stream/IntPipeline;->mapToObj(Ljava/util/function/IntFunction;)Ljava/util/stream/Stream;
-HSPLjava/util/stream/IntPipeline;->toArray()[I+]Ljava/util/stream/IntPipeline;Ljava/util/stream/ReferencePipeline$4;,Ljava/util/stream/IntPipeline$9;,Ljava/util/stream/IntPipeline$Head;,Ljava/util/stream/SliceOps$2;]Ljava/util/stream/Node$OfInt;Ljava/util/stream/Nodes$IntSpinedNodeBuilder;,Ljava/util/stream/Nodes$IntFixedNodeBuilder;
+HSPLjava/util/stream/IntPipeline;->reduce(ILjava/util/function/IntBinaryOperator;)I+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/stream/IntPipeline;Ljava/util/stream/IntPipeline$Head;
+HSPLjava/util/stream/IntPipeline;->sum()I+]Ljava/util/stream/IntPipeline;Ljava/util/stream/IntPipeline$Head;
+HSPLjava/util/stream/IntPipeline;->toArray()[I+]Ljava/util/stream/IntPipeline;Ljava/util/stream/ReferencePipeline$4;,Ljava/util/stream/IntPipeline$9;,Ljava/util/stream/ReferencePipeline$8;,Ljava/util/stream/SliceOps$2;,Ljava/util/stream/IntPipeline$Head;]Ljava/util/stream/Node$OfInt;Ljava/util/stream/Nodes$IntFixedNodeBuilder;,Ljava/util/stream/Nodes$IntSpinedNodeBuilder;
+HSPLjava/util/stream/IntStream;->empty()Ljava/util/stream/IntStream;
 HSPLjava/util/stream/IntStream;->of([I)Ljava/util/stream/IntStream;
 HSPLjava/util/stream/IntStream;->range(II)Ljava/util/stream/IntStream;
+HSPLjava/util/stream/LongPipeline$$ExternalSyntheticLambda4;-><clinit>()V
+HSPLjava/util/stream/LongPipeline$$ExternalSyntheticLambda4;-><init>()V
+HSPLjava/util/stream/LongPipeline$$ExternalSyntheticLambda4;->applyAsLong(JJ)J
 HSPLjava/util/stream/LongPipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
 HSPLjava/util/stream/LongPipeline$StatelessOp;->opIsStateful()Z
 HSPLjava/util/stream/LongPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
 HSPLjava/util/stream/LongPipeline;->reduce(JLjava/util/function/LongBinaryOperator;)J+]Ljava/lang/Long;Ljava/lang/Long;]Ljava/util/stream/LongPipeline;Ljava/util/stream/ReferencePipeline$5;
 HSPLjava/util/stream/LongPipeline;->sum()J+]Ljava/util/stream/LongPipeline;Ljava/util/stream/ReferencePipeline$5;
+HSPLjava/util/stream/MatchOps$$ExternalSyntheticLambda3;-><init>(Ljava/util/stream/MatchOps$MatchKind;Ljava/util/function/Predicate;)V
+HSPLjava/util/stream/MatchOps$$ExternalSyntheticLambda3;->get()Ljava/lang/Object;
 HSPLjava/util/stream/MatchOps$1MatchSink;-><init>(Ljava/util/stream/MatchOps$MatchKind;Ljava/util/function/Predicate;)V
 HSPLjava/util/stream/MatchOps$1MatchSink;->accept(Ljava/lang/Object;)V+]Ljava/util/function/Predicate;megamorphic_types
 HSPLjava/util/stream/MatchOps$BooleanTerminalSink;-><init>(Ljava/util/stream/MatchOps$MatchKind;)V
@@ -7062,7 +7520,7 @@
 HSPLjava/util/stream/MatchOps$MatchKind;->access$000(Ljava/util/stream/MatchOps$MatchKind;)Z
 HSPLjava/util/stream/MatchOps$MatchKind;->access$100(Ljava/util/stream/MatchOps$MatchKind;)Z
 HSPLjava/util/stream/MatchOps$MatchOp;-><init>(Ljava/util/stream/StreamShape;Ljava/util/stream/MatchOps$MatchKind;Ljava/util/function/Supplier;)V
-HSPLjava/util/stream/MatchOps$MatchOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Boolean;+]Ljava/util/stream/PipelineHelper;Ljava/util/stream/IntPipeline$Head;,Ljava/util/stream/ReferencePipeline$7;,Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/ReferencePipeline$3;,Ljava/util/stream/ReferencePipeline$2;]Ljava/util/function/Supplier;Ljava/util/stream/MatchOps$$ExternalSyntheticLambda3;,Ljava/util/stream/MatchOps$$ExternalSyntheticLambda1;]Ljava/util/stream/MatchOps$BooleanTerminalSink;Ljava/util/stream/MatchOps$2MatchSink;,Ljava/util/stream/MatchOps$1MatchSink;
+HSPLjava/util/stream/MatchOps$MatchOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Boolean;+]Ljava/util/stream/PipelineHelper;Ljava/util/stream/IntPipeline$Head;,Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/ReferencePipeline$7;,Ljava/util/stream/ReferencePipeline$3;,Ljava/util/stream/ReferencePipeline$2;]Ljava/util/function/Supplier;Ljava/util/stream/MatchOps$$ExternalSyntheticLambda3;,Ljava/util/stream/MatchOps$$ExternalSyntheticLambda1;]Ljava/util/stream/MatchOps$BooleanTerminalSink;Ljava/util/stream/MatchOps$2MatchSink;,Ljava/util/stream/MatchOps$1MatchSink;
 HSPLjava/util/stream/MatchOps$MatchOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+]Ljava/util/stream/MatchOps$MatchOp;Ljava/util/stream/MatchOps$MatchOp;
 HSPLjava/util/stream/MatchOps$MatchOp;->getOpFlags()I
 HSPLjava/util/stream/MatchOps;->lambda$makeInt$1(Ljava/util/stream/MatchOps$MatchKind;Ljava/util/function/IntPredicate;)Ljava/util/stream/MatchOps$BooleanTerminalSink;
@@ -7087,6 +7545,7 @@
 HSPLjava/util/stream/Nodes$IntFixedNodeBuilder;->build()Ljava/util/stream/Node;+]Ljava/util/stream/Nodes$IntFixedNodeBuilder;Ljava/util/stream/Nodes$IntFixedNodeBuilder;
 HSPLjava/util/stream/Nodes$IntFixedNodeBuilder;->end()V
 HSPLjava/util/stream/Nodes$SpinedNodeBuilder;-><clinit>()V
+HSPLjava/util/stream/Nodes$SpinedNodeBuilder;-><init>()V
 HSPLjava/util/stream/Nodes;->builder()Ljava/util/stream/Node$Builder;
 HSPLjava/util/stream/Nodes;->builder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
 HSPLjava/util/stream/Nodes;->flatten(Ljava/util/stream/Node;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;+]Ljava/util/stream/Node;Ljava/util/stream/Nodes$FixedNodeBuilder;,Ljava/util/stream/Nodes$SpinedNodeBuilder;
@@ -7097,7 +7556,7 @@
 HSPLjava/util/stream/ReduceOps$12;->makeSink()Ljava/util/stream/ReduceOps$12ReducingSink;
 HSPLjava/util/stream/ReduceOps$12;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink;
 HSPLjava/util/stream/ReduceOps$12ReducingSink;-><init>(Ljava/util/function/DoubleBinaryOperator;)V
-HSPLjava/util/stream/ReduceOps$12ReducingSink;->accept(D)V
+HSPLjava/util/stream/ReduceOps$12ReducingSink;->accept(D)V+]Ljava/util/function/DoubleBinaryOperator;Ljava/util/stream/DoublePipeline$$ExternalSyntheticLambda4;
 HSPLjava/util/stream/ReduceOps$12ReducingSink;->begin(J)V
 HSPLjava/util/stream/ReduceOps$12ReducingSink;->get()Ljava/lang/Object;
 HSPLjava/util/stream/ReduceOps$12ReducingSink;->get()Ljava/util/OptionalDouble;
@@ -7105,7 +7564,6 @@
 HSPLjava/util/stream/ReduceOps$2;->makeSink()Ljava/util/stream/ReduceOps$2ReducingSink;
 HSPLjava/util/stream/ReduceOps$2;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink;
 HSPLjava/util/stream/ReduceOps$2ReducingSink;-><init>(Ljava/util/function/BinaryOperator;)V
-HSPLjava/util/stream/ReduceOps$2ReducingSink;->accept(Ljava/lang/Object;)V
 HSPLjava/util/stream/ReduceOps$2ReducingSink;->begin(J)V
 HSPLjava/util/stream/ReduceOps$2ReducingSink;->get()Ljava/lang/Object;
 HSPLjava/util/stream/ReduceOps$2ReducingSink;->get()Ljava/util/Optional;
@@ -7116,6 +7574,13 @@
 HSPLjava/util/stream/ReduceOps$3ReducingSink;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;)V
 HSPLjava/util/stream/ReduceOps$3ReducingSink;->accept(Ljava/lang/Object;)V+]Ljava/util/function/BiConsumer;megamorphic_types
 HSPLjava/util/stream/ReduceOps$3ReducingSink;->begin(J)V+]Ljava/util/function/Supplier;megamorphic_types
+HSPLjava/util/stream/ReduceOps$5;-><init>(Ljava/util/stream/StreamShape;Ljava/util/function/IntBinaryOperator;I)V
+HSPLjava/util/stream/ReduceOps$5;->makeSink()Ljava/util/stream/ReduceOps$5ReducingSink;
+HSPLjava/util/stream/ReduceOps$5;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink;+]Ljava/util/stream/ReduceOps$5;Ljava/util/stream/ReduceOps$5;
+HSPLjava/util/stream/ReduceOps$5ReducingSink;-><init>(ILjava/util/function/IntBinaryOperator;)V
+HSPLjava/util/stream/ReduceOps$5ReducingSink;->begin(J)V
+HSPLjava/util/stream/ReduceOps$5ReducingSink;->get()Ljava/lang/Integer;
+HSPLjava/util/stream/ReduceOps$5ReducingSink;->get()Ljava/lang/Object;+]Ljava/util/stream/ReduceOps$5ReducingSink;Ljava/util/stream/ReduceOps$5ReducingSink;
 HSPLjava/util/stream/ReduceOps$8;-><init>(Ljava/util/stream/StreamShape;Ljava/util/function/LongBinaryOperator;J)V
 HSPLjava/util/stream/ReduceOps$8;->makeSink()Ljava/util/stream/ReduceOps$8ReducingSink;
 HSPLjava/util/stream/ReduceOps$8;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink;+]Ljava/util/stream/ReduceOps$8;Ljava/util/stream/ReduceOps$8;
@@ -7129,35 +7594,34 @@
 HSPLjava/util/stream/ReduceOps$ReduceOp;-><init>(Ljava/util/stream/StreamShape;)V
 HSPLjava/util/stream/ReduceOps$ReduceOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+]Ljava/util/stream/ReduceOps$AccumulatingSink;megamorphic_types]Ljava/util/stream/PipelineHelper;megamorphic_types]Ljava/util/stream/ReduceOps$ReduceOp;megamorphic_types
 HSPLjava/util/stream/ReduceOps;->makeDouble(Ljava/util/function/DoubleBinaryOperator;)Ljava/util/stream/TerminalOp;
+HSPLjava/util/stream/ReduceOps;->makeInt(ILjava/util/function/IntBinaryOperator;)Ljava/util/stream/TerminalOp;
 HSPLjava/util/stream/ReduceOps;->makeLong(JLjava/util/function/LongBinaryOperator;)Ljava/util/stream/TerminalOp;
 HSPLjava/util/stream/ReduceOps;->makeRef(Ljava/util/function/BinaryOperator;)Ljava/util/stream/TerminalOp;
 HSPLjava/util/stream/ReduceOps;->makeRef(Ljava/util/stream/Collector;)Ljava/util/stream/TerminalOp;+]Ljava/util/stream/Collector;Ljava/util/stream/Collectors$CollectorImpl;
+HSPLjava/util/stream/ReferencePipeline$$ExternalSyntheticLambda2;-><clinit>()V
+HSPLjava/util/stream/ReferencePipeline$$ExternalSyntheticLambda2;-><init>()V
+HSPLjava/util/stream/ReferencePipeline$$ExternalSyntheticLambda2;->applyAsLong(Ljava/lang/Object;)J
 HSPLjava/util/stream/ReferencePipeline$2$1;-><init>(Ljava/util/stream/ReferencePipeline$2;Ljava/util/stream/Sink;)V
 HSPLjava/util/stream/ReferencePipeline$2$1;->accept(Ljava/lang/Object;)V+]Ljava/util/stream/Sink;megamorphic_types]Ljava/util/function/Predicate;megamorphic_types
 HSPLjava/util/stream/ReferencePipeline$2$1;->begin(J)V+]Ljava/util/stream/Sink;megamorphic_types
 HSPLjava/util/stream/ReferencePipeline$2;-><init>(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/Predicate;)V
 HSPLjava/util/stream/ReferencePipeline$2;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
 HSPLjava/util/stream/ReferencePipeline$3$1;-><init>(Ljava/util/stream/ReferencePipeline$3;Ljava/util/stream/Sink;)V
-HSPLjava/util/stream/ReferencePipeline$3$1;->accept(Ljava/lang/Object;)V+]Ljava/util/function/Function;megamorphic_types]Ljava/util/stream/Sink;megamorphic_types
+HSPLjava/util/stream/ReferencePipeline$3$1;->accept(Ljava/lang/Object;)V+]Ljava/util/stream/Sink;megamorphic_types]Ljava/util/function/Function;megamorphic_types
 HSPLjava/util/stream/ReferencePipeline$3;-><init>(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/Function;)V
 HSPLjava/util/stream/ReferencePipeline$3;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
 HSPLjava/util/stream/ReferencePipeline$4$1;-><init>(Ljava/util/stream/ReferencePipeline$4;Ljava/util/stream/Sink;)V
-HSPLjava/util/stream/ReferencePipeline$4$1;->accept(Ljava/lang/Object;)V+]Ljava/util/function/ToIntFunction;missing_types]Ljava/util/stream/Sink;Ljava/util/stream/Nodes$IntFixedNodeBuilder;,Ljava/util/stream/Nodes$IntSpinedNodeBuilder;,Ljava/util/stream/IntPipeline$4$1;,Ljava/util/stream/ReduceOps$5ReducingSink;,Ljava/util/stream/ReduceOps$6ReducingSink;,Ljava/util/stream/IntPipeline$9$1;
+HSPLjava/util/stream/ReferencePipeline$4$1;->accept(Ljava/lang/Object;)V+]Ljava/util/function/ToIntFunction;megamorphic_types]Ljava/util/stream/Sink;Ljava/util/stream/Nodes$IntFixedNodeBuilder;,Ljava/util/stream/Nodes$IntSpinedNodeBuilder;,Ljava/util/stream/IntPipeline$4$1;,Ljava/util/stream/ReduceOps$5ReducingSink;,Ljava/util/stream/ReduceOps$6ReducingSink;,Ljava/util/stream/IntPipeline$9$1;
 HSPLjava/util/stream/ReferencePipeline$4;-><init>(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/ToIntFunction;)V
 HSPLjava/util/stream/ReferencePipeline$4;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
 HSPLjava/util/stream/ReferencePipeline$5$1;-><init>(Ljava/util/stream/ReferencePipeline$5;Ljava/util/stream/Sink;)V
-HSPLjava/util/stream/ReferencePipeline$5$1;->accept(Ljava/lang/Object;)V+]Ljava/util/function/ToLongFunction;Lcom/android/internal/telephony/metrics/ModemPowerMetrics$$ExternalSyntheticLambda0;,Ljava/util/stream/ReferencePipeline$$ExternalSyntheticLambda2;]Ljava/util/stream/Sink;Ljava/util/stream/ReduceOps$8ReducingSink;,Ljava/util/stream/Nodes$LongFixedNodeBuilder;,Ljava/util/stream/LongPipeline$8$1;
+HSPLjava/util/stream/ReferencePipeline$5$1;->accept(Ljava/lang/Object;)V+]Ljava/util/function/ToLongFunction;missing_types]Ljava/util/stream/Sink;Ljava/util/stream/ReduceOps$8ReducingSink;,Ljava/util/stream/Nodes$LongFixedNodeBuilder;,Ljava/util/stream/LongPipeline$8$1;,Ljava/util/stream/ReduceOps$9ReducingSink;
 HSPLjava/util/stream/ReferencePipeline$5;-><init>(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/ToLongFunction;)V
 HSPLjava/util/stream/ReferencePipeline$5;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
 HSPLjava/util/stream/ReferencePipeline$6$1;-><init>(Ljava/util/stream/ReferencePipeline$6;Ljava/util/stream/Sink;)V
 HSPLjava/util/stream/ReferencePipeline$6$1;->accept(Ljava/lang/Object;)V+]Ljava/util/stream/Sink;Ljava/util/stream/SortedOps$DoubleSortingSink;,Ljava/util/stream/ReduceOps$13ReducingSink;
 HSPLjava/util/stream/ReferencePipeline$6;-><init>(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/ToDoubleFunction;)V
 HSPLjava/util/stream/ReferencePipeline$6;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-HSPLjava/util/stream/ReferencePipeline$7$1;-><init>(Ljava/util/stream/ReferencePipeline$7;Ljava/util/stream/Sink;)V
-HSPLjava/util/stream/ReferencePipeline$7$1;->accept(Ljava/lang/Object;)V
-HSPLjava/util/stream/ReferencePipeline$7$1;->begin(J)V
-HSPLjava/util/stream/ReferencePipeline$7;-><init>(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/Function;)V
-HSPLjava/util/stream/ReferencePipeline$7;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
 HSPLjava/util/stream/ReferencePipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
 HSPLjava/util/stream/ReferencePipeline$Head;->forEach(Ljava/util/function/Consumer;)V+]Ljava/util/Spliterator;megamorphic_types]Ljava/util/stream/ReferencePipeline$Head;Ljava/util/stream/ReferencePipeline$Head;
 HSPLjava/util/stream/ReferencePipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
@@ -7166,31 +7630,31 @@
 HSPLjava/util/stream/ReferencePipeline$StatelessOp;->opIsStateful()Z
 HSPLjava/util/stream/ReferencePipeline;-><init>(Ljava/util/Spliterator;IZ)V
 HSPLjava/util/stream/ReferencePipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
-HSPLjava/util/stream/ReferencePipeline;->anyMatch(Ljava/util/function/Predicate;)Z+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$7;,Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/ReferencePipeline$3;]Ljava/lang/Boolean;Ljava/lang/Boolean;
-HSPLjava/util/stream/ReferencePipeline;->collect(Ljava/util/stream/Collector;)Ljava/lang/Object;+]Ljava/util/stream/Collector;Ljava/util/stream/Collectors$CollectorImpl;]Ljava/util/stream/ReferencePipeline;megamorphic_types]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;,Ljava/util/Collections$EmptySet;]Ljava/util/function/Function;missing_types
-HSPLjava/util/stream/ReferencePipeline;->count()J+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$2;,Ljava/util/stream/ReferencePipeline$3;,Ljava/util/stream/DistinctOps$1;]Ljava/util/stream/LongStream;Ljava/util/stream/ReferencePipeline$5;
+HSPLjava/util/stream/ReferencePipeline;->anyMatch(Ljava/util/function/Predicate;)Z+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/ReferencePipeline$7;,Ljava/util/stream/ReferencePipeline$3;,Ljava/util/stream/ReferencePipeline$2;]Ljava/lang/Boolean;Ljava/lang/Boolean;
+HSPLjava/util/stream/ReferencePipeline;->collect(Ljava/util/stream/Collector;)Ljava/lang/Object;+]Ljava/util/stream/Collector;Ljava/util/stream/Collectors$CollectorImpl;]Ljava/util/function/Function;missing_types]Ljava/util/stream/ReferencePipeline;megamorphic_types]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;,Ljava/util/Collections$EmptySet;
+HSPLjava/util/stream/ReferencePipeline;->count()J+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$3;,Ljava/util/stream/ReferencePipeline$2;,Ljava/util/stream/DistinctOps$1;]Ljava/util/stream/LongStream;Ljava/util/stream/ReferencePipeline$5;
 HSPLjava/util/stream/ReferencePipeline;->distinct()Ljava/util/stream/Stream;
 HSPLjava/util/stream/ReferencePipeline;->filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
-HSPLjava/util/stream/ReferencePipeline;->findAny()Ljava/util/Optional;+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$3;,Ljava/util/stream/ReferencePipeline$2;
-HSPLjava/util/stream/ReferencePipeline;->findFirst()Ljava/util/Optional;+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$2;,Ljava/util/stream/SliceOps$1;,Ljava/util/stream/SortedOps$OfRef;
+HSPLjava/util/stream/ReferencePipeline;->findAny()Ljava/util/Optional;+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$2;,Ljava/util/stream/ReferencePipeline$3;
+HSPLjava/util/stream/ReferencePipeline;->findFirst()Ljava/util/Optional;+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$2;,Ljava/util/stream/SliceOps$1;,Ljava/util/stream/SortedOps$OfRef;,Ljava/util/stream/ReferencePipeline$Head;
 HSPLjava/util/stream/ReferencePipeline;->flatMap(Ljava/util/function/Function;)Ljava/util/stream/Stream;
-HSPLjava/util/stream/ReferencePipeline;->forEach(Ljava/util/function/Consumer;)V+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$7;,Ljava/util/stream/ReferencePipeline$2;,Ljava/util/stream/ReferencePipeline$3;,Ljava/util/stream/SortedOps$OfRef;,Ljava/util/stream/IntPipeline$4;,Ljava/util/stream/ReferencePipeline$Head;
-HSPLjava/util/stream/ReferencePipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V+]Ljava/util/Spliterator;megamorphic_types]Ljava/util/stream/Sink;Ljava/util/stream/ReferencePipeline$7$1;,Ljava/util/stream/ReferencePipeline$2$1;,Ljava/util/stream/ReferencePipeline$3$1;,Ljava/util/stream/MatchOps$1MatchSink;,Ljava/util/stream/SortedOps$SizedRefSortingSink;,Ljava/util/stream/SliceOps$1$1;,Ljava/util/stream/ReferencePipeline$4$1;,Ljava/util/stream/FindOps$FindSink$OfRef;
+HSPLjava/util/stream/ReferencePipeline;->forEach(Ljava/util/function/Consumer;)V+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$3;,Ljava/util/stream/ReferencePipeline$2;,Ljava/util/stream/ReferencePipeline$7;,Ljava/util/stream/SortedOps$OfRef;,Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/IntPipeline$4;
+HSPLjava/util/stream/ReferencePipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V+]Ljava/util/Spliterator;megamorphic_types]Ljava/util/stream/Sink;megamorphic_types
 HSPLjava/util/stream/ReferencePipeline;->lambda$count$2(Ljava/lang/Object;)J
 HSPLjava/util/stream/ReferencePipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
 HSPLjava/util/stream/ReferencePipeline;->map(Ljava/util/function/Function;)Ljava/util/stream/Stream;
 HSPLjava/util/stream/ReferencePipeline;->mapToDouble(Ljava/util/function/ToDoubleFunction;)Ljava/util/stream/DoubleStream;
 HSPLjava/util/stream/ReferencePipeline;->mapToInt(Ljava/util/function/ToIntFunction;)Ljava/util/stream/IntStream;
 HSPLjava/util/stream/ReferencePipeline;->mapToLong(Ljava/util/function/ToLongFunction;)Ljava/util/stream/LongStream;
-HSPLjava/util/stream/ReferencePipeline;->max(Ljava/util/Comparator;)Ljava/util/Optional;+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$Head;
-HSPLjava/util/stream/ReferencePipeline;->reduce(Ljava/util/function/BinaryOperator;)Ljava/util/Optional;+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/ReferencePipeline$2;
+HSPLjava/util/stream/ReferencePipeline;->max(Ljava/util/Comparator;)Ljava/util/Optional;+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$2;,Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/ReferencePipeline$3;
+HSPLjava/util/stream/ReferencePipeline;->reduce(Ljava/util/function/BinaryOperator;)Ljava/util/Optional;+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/ReferencePipeline$2;,Ljava/util/stream/ReferencePipeline$3;
 HSPLjava/util/stream/ReferencePipeline;->sorted()Ljava/util/stream/Stream;
 HSPLjava/util/stream/ReferencePipeline;->sorted(Ljava/util/Comparator;)Ljava/util/stream/Stream;
 HSPLjava/util/stream/ReferencePipeline;->toArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;+]Ljava/util/stream/Node;Ljava/util/stream/Nodes$FixedNodeBuilder;,Ljava/util/stream/Nodes$SpinedNodeBuilder;]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/ReferencePipeline$3;,Ljava/util/stream/DistinctOps$1;,Ljava/util/stream/SortedOps$OfRef;,Ljava/util/stream/ReferencePipeline$2;
 HSPLjava/util/stream/ReferencePipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
 HSPLjava/util/stream/Sink$ChainedInt;-><init>(Ljava/util/stream/Sink;)V
-HSPLjava/util/stream/Sink$ChainedInt;->begin(J)V+]Ljava/util/stream/Sink;Ljava/util/stream/ReduceOps$3ReducingSink;,Ljava/util/stream/DistinctOps$1$2;,Ljava/util/stream/ReferencePipeline$2$1;,Ljava/util/stream/ForEachOps$ForEachOp$OfRef;
-HSPLjava/util/stream/Sink$ChainedInt;->end()V+]Ljava/util/stream/Sink;Ljava/util/stream/ReduceOps$3ReducingSink;,Ljava/util/stream/DistinctOps$1$2;,Ljava/util/stream/ReferencePipeline$2$1;,Ljava/util/stream/FindOps$FindSink$OfInt;,Ljava/util/stream/ForEachOps$ForEachOp$OfRef;,Ljava/util/stream/IntPipeline$4$1;,Ljava/util/stream/Nodes$IntSpinedNodeBuilder;,Ljava/util/stream/ForEachOps$ForEachOp$OfInt;,Ljava/util/stream/SliceOps$2$1;
+HSPLjava/util/stream/Sink$ChainedInt;->begin(J)V+]Ljava/util/stream/Sink;megamorphic_types
+HSPLjava/util/stream/Sink$ChainedInt;->end()V+]Ljava/util/stream/Sink;megamorphic_types
 HSPLjava/util/stream/Sink$ChainedReference;-><init>(Ljava/util/stream/Sink;)V
 HSPLjava/util/stream/Sink$ChainedReference;->begin(J)V+]Ljava/util/stream/Sink;megamorphic_types
 HSPLjava/util/stream/Sink$ChainedReference;->cancellationRequested()Z+]Ljava/util/stream/Sink;megamorphic_types
@@ -7202,16 +7666,10 @@
 HSPLjava/util/stream/SortedOps$OfRef;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;+]Ljava/util/stream/StreamOpFlag;Ljava/util/stream/StreamOpFlag;
 HSPLjava/util/stream/SortedOps$RefSortingSink;-><init>(Ljava/util/stream/Sink;Ljava/util/Comparator;)V
 HSPLjava/util/stream/SortedOps$RefSortingSink;->begin(J)V
-HSPLjava/util/stream/SortedOps$RefSortingSink;->end()V+]Ljava/util/stream/Sink;Ljava/util/stream/Nodes$SpinedNodeBuilder;,Ljava/util/stream/ReferencePipeline$3$1;,Ljava/util/stream/ReduceOps$3ReducingSink;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLjava/util/stream/SortedOps$SizedRefSortingSink;-><init>(Ljava/util/stream/Sink;Ljava/util/Comparator;)V
-HSPLjava/util/stream/SortedOps$SizedRefSortingSink;->accept(Ljava/lang/Object;)V
-HSPLjava/util/stream/SortedOps$SizedRefSortingSink;->begin(J)V
-HSPLjava/util/stream/SortedOps$SizedRefSortingSink;->end()V
+HSPLjava/util/stream/SortedOps$RefSortingSink;->end()V+]Ljava/util/stream/Sink;Ljava/util/stream/ReferencePipeline$3$1;,Ljava/util/stream/ReduceOps$3ReducingSink;,Ljava/util/stream/Nodes$SpinedNodeBuilder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLjava/util/stream/SortedOps;->makeRef(Ljava/util/stream/AbstractPipeline;Ljava/util/Comparator;)Ljava/util/stream/Stream;
-HSPLjava/util/stream/SpinedBuffer;-><init>()V
-HSPLjava/util/stream/SpinedBuffer;->count()J
 HSPLjava/util/stream/Stream;->builder()Ljava/util/stream/Stream$Builder;
-HSPLjava/util/stream/Stream;->concat(Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Ljava/util/stream/Stream;+]Ljava/util/stream/Stream;Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/ReferencePipeline$7;
+HSPLjava/util/stream/Stream;->concat(Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Ljava/util/stream/Stream;+]Ljava/util/stream/Stream;Ljava/util/stream/ReferencePipeline$Head;,Ljava/util/stream/ReferencePipeline$3;,Ljava/util/stream/ReferencePipeline$7;
 HSPLjava/util/stream/Stream;->of([Ljava/lang/Object;)Ljava/util/stream/Stream;
 HSPLjava/util/stream/StreamOpFlag;->combineOpFlags(II)I
 HSPLjava/util/stream/StreamOpFlag;->fromCharacteristics(Ljava/util/Spliterator;)I+]Ljava/util/Spliterator;megamorphic_types
@@ -7221,17 +7679,19 @@
 HSPLjava/util/stream/StreamSupport;->stream(Ljava/util/Spliterator;Z)Ljava/util/stream/Stream;
 HSPLjava/util/stream/Streams$2;-><init>(Ljava/util/stream/BaseStream;Ljava/util/stream/BaseStream;)V
 HSPLjava/util/stream/Streams$ConcatSpliterator$OfRef;-><init>(Ljava/util/Spliterator;Ljava/util/Spliterator;)V
-HSPLjava/util/stream/Streams$ConcatSpliterator;-><init>(Ljava/util/Spliterator;Ljava/util/Spliterator;)V+]Ljava/util/Spliterator;Ljava/util/Spliterators$IntArraySpliterator;
-HSPLjava/util/stream/Streams$ConcatSpliterator;->characteristics()I+]Ljava/util/Spliterator;Ljava/util/Spliterators$IntArraySpliterator;,Ljava/util/Spliterators$ArraySpliterator;,Ljava/util/stream/StreamSpliterators$WrappingSpliterator;,Ljava/util/ArrayList$ArrayListSpliterator;,Ljava/util/stream/Streams$StreamBuilderImpl;,Ljava/util/stream/Streams$ConcatSpliterator$OfRef;
+HSPLjava/util/stream/Streams$ConcatSpliterator;-><init>(Ljava/util/Spliterator;Ljava/util/Spliterator;)V+]Ljava/util/Spliterator;megamorphic_types
+HSPLjava/util/stream/Streams$ConcatSpliterator;->characteristics()I+]Ljava/util/Spliterator;megamorphic_types
 HSPLjava/util/stream/Streams$RangeIntSpliterator;-><init>(III)V
 HSPLjava/util/stream/Streams$RangeIntSpliterator;-><init>(IIZ)V
 HSPLjava/util/stream/Streams$RangeIntSpliterator;->characteristics()I
+HSPLjava/util/stream/Streams$RangeIntSpliterator;->estimateSize()J
 HSPLjava/util/stream/Streams$RangeIntSpliterator;->forEachRemaining(Ljava/util/function/IntConsumer;)V+]Ljava/util/function/IntConsumer;missing_types
 HSPLjava/util/stream/Streams$RangeIntSpliterator;->getComparator()Ljava/util/Comparator;
 HSPLjava/util/stream/Streams;->composedClose(Ljava/util/stream/BaseStream;Ljava/util/stream/BaseStream;)Ljava/lang/Runnable;
 HSPLjava/util/stream/TerminalOp;->getOpFlags()I
 HSPLjava/util/zip/Adler32;-><init>()V
 HSPLjava/util/zip/Adler32;->getValue()J
+HSPLjava/util/zip/Adler32;->update([BII)V
 HSPLjava/util/zip/CRC32;-><init>()V
 HSPLjava/util/zip/CRC32;->getValue()J
 HSPLjava/util/zip/CRC32;->reset()V
@@ -7240,12 +7700,12 @@
 HSPLjava/util/zip/CRC32;->update([BII)V
 HSPLjava/util/zip/CheckedInputStream;-><init>(Ljava/io/InputStream;Ljava/util/zip/Checksum;)V
 HSPLjava/util/zip/CheckedInputStream;->read()I+]Ljava/io/InputStream;missing_types]Ljava/util/zip/Checksum;Ljava/util/zip/CRC32;
-HSPLjava/util/zip/CheckedInputStream;->read([BII)I+]Ljava/io/InputStream;missing_types]Ljava/util/zip/Checksum;Ljava/util/zip/CRC32;
+HSPLjava/util/zip/CheckedInputStream;->read([BII)I+]Ljava/io/InputStream;missing_types]Ljava/util/zip/Checksum;Ljava/util/zip/CRC32;,Ljava/util/zip/Adler32;
 HSPLjava/util/zip/Deflater;-><init>()V
-HSPLjava/util/zip/Deflater;-><init>(IZ)V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLjava/util/zip/Deflater;-><init>(IZ)V+]Ldalvik/system/CloseGuard;missing_types
 HSPLjava/util/zip/Deflater;->deflate([BII)I+]Ljava/util/zip/Deflater;Ljava/util/zip/Deflater;
 HSPLjava/util/zip/Deflater;->deflate([BIII)I+]Ljava/util/zip/ZStreamRef;Ljava/util/zip/ZStreamRef;
-HSPLjava/util/zip/Deflater;->end()V+]Ljava/util/zip/ZStreamRef;Ljava/util/zip/ZStreamRef;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLjava/util/zip/Deflater;->end()V+]Ljava/util/zip/ZStreamRef;Ljava/util/zip/ZStreamRef;]Ldalvik/system/CloseGuard;missing_types
 HSPLjava/util/zip/Deflater;->ensureOpen()V+]Ljava/util/zip/ZStreamRef;Ljava/util/zip/ZStreamRef;
 HSPLjava/util/zip/Deflater;->finalize()V+]Ljava/util/zip/Deflater;Ljava/util/zip/Deflater;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
 HSPLjava/util/zip/Deflater;->finish()V
@@ -7253,12 +7713,13 @@
 HSPLjava/util/zip/Deflater;->getBytesRead()J
 HSPLjava/util/zip/Deflater;->getTotalIn()I+]Ljava/util/zip/Deflater;Ljava/util/zip/Deflater;
 HSPLjava/util/zip/Deflater;->needsInput()Z
+HSPLjava/util/zip/Deflater;->reset()V+]Ljava/util/zip/ZStreamRef;Ljava/util/zip/ZStreamRef;
 HSPLjava/util/zip/Deflater;->setInput([BII)V
 HSPLjava/util/zip/DeflaterOutputStream;-><init>(Ljava/io/OutputStream;)V
 HSPLjava/util/zip/DeflaterOutputStream;-><init>(Ljava/io/OutputStream;Ljava/util/zip/Deflater;)V
 HSPLjava/util/zip/DeflaterOutputStream;-><init>(Ljava/io/OutputStream;Ljava/util/zip/Deflater;IZ)V
 HSPLjava/util/zip/DeflaterOutputStream;-><init>(Ljava/io/OutputStream;Z)V
-HSPLjava/util/zip/DeflaterOutputStream;->close()V+]Ljava/util/zip/Deflater;Ljava/util/zip/Deflater;]Ljava/util/zip/DeflaterOutputStream;Ljava/util/zip/GZIPOutputStream;,Ljava/util/zip/DeflaterOutputStream;,Ljava/util/zip/ZipOutputStream;]Ljava/io/OutputStream;missing_types
+HSPLjava/util/zip/DeflaterOutputStream;->close()V+]Ljava/util/zip/Deflater;Ljava/util/zip/Deflater;]Ljava/util/zip/DeflaterOutputStream;missing_types]Ljava/io/OutputStream;missing_types
 HSPLjava/util/zip/DeflaterOutputStream;->deflate()V+]Ljava/util/zip/Deflater;Ljava/util/zip/Deflater;]Ljava/io/OutputStream;missing_types
 HSPLjava/util/zip/DeflaterOutputStream;->finish()V+]Ljava/util/zip/Deflater;Ljava/util/zip/Deflater;]Ljava/util/zip/DeflaterOutputStream;Ljava/util/zip/DeflaterOutputStream;
 HSPLjava/util/zip/DeflaterOutputStream;->flush()V+]Ljava/io/OutputStream;missing_types
@@ -7283,36 +7744,39 @@
 HSPLjava/util/zip/GZIPOutputStream;->writeInt(I[BI)V
 HSPLjava/util/zip/GZIPOutputStream;->writeShort(I[BI)V
 HSPLjava/util/zip/GZIPOutputStream;->writeTrailer([BI)V+]Ljava/util/zip/CRC32;Ljava/util/zip/CRC32;]Ljava/util/zip/Deflater;Ljava/util/zip/Deflater;
-HSPLjava/util/zip/Inflater;-><init>(Z)V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
-HSPLjava/util/zip/Inflater;->end()V+]Ljava/util/zip/ZStreamRef;Ljava/util/zip/ZStreamRef;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLjava/util/zip/Inflater;-><init>()V
+HSPLjava/util/zip/Inflater;-><init>(Z)V+]Ldalvik/system/CloseGuard;missing_types
+HSPLjava/util/zip/Inflater;->end()V+]Ljava/util/zip/ZStreamRef;Ljava/util/zip/ZStreamRef;]Ldalvik/system/CloseGuard;missing_types
 HSPLjava/util/zip/Inflater;->ended()Z+]Ljava/util/zip/ZStreamRef;Ljava/util/zip/ZStreamRef;
 HSPLjava/util/zip/Inflater;->ensureOpen()V+]Ljava/util/zip/ZStreamRef;Ljava/util/zip/ZStreamRef;
-HSPLjava/util/zip/Inflater;->finalize()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater;
+HSPLjava/util/zip/Inflater;->finalize()V+]Ldalvik/system/CloseGuard;missing_types]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater;
 HSPLjava/util/zip/Inflater;->finished()Z
+HSPLjava/util/zip/Inflater;->getBytesRead()J
 HSPLjava/util/zip/Inflater;->getBytesWritten()J
 HSPLjava/util/zip/Inflater;->getRemaining()I
 HSPLjava/util/zip/Inflater;->getTotalOut()I+]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater;
 HSPLjava/util/zip/Inflater;->inflate([BII)I+]Ljava/util/zip/ZStreamRef;Ljava/util/zip/ZStreamRef;
 HSPLjava/util/zip/Inflater;->needsDictionary()Z
 HSPLjava/util/zip/Inflater;->needsInput()Z
+HSPLjava/util/zip/Inflater;->reset()V+]Ljava/util/zip/ZStreamRef;Ljava/util/zip/ZStreamRef;
 HSPLjava/util/zip/Inflater;->setInput([BII)V
 HSPLjava/util/zip/InflaterInputStream;-><init>(Ljava/io/InputStream;Ljava/util/zip/Inflater;I)V
 HSPLjava/util/zip/InflaterInputStream;->available()I+]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater;
-HSPLjava/util/zip/InflaterInputStream;->close()V+]Ljava/io/InputStream;missing_types]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater;
+HSPLjava/util/zip/InflaterInputStream;->close()V+]Ljava/io/InputStream;megamorphic_types]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater;
 HSPLjava/util/zip/InflaterInputStream;->ensureOpen()V
-HSPLjava/util/zip/InflaterInputStream;->fill()V+]Ljava/io/InputStream;megamorphic_types]Ljava/util/zip/Inflater;missing_types
-HSPLjava/util/zip/InflaterInputStream;->read()I+]Ljava/util/zip/InflaterInputStream;Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;,Ljava/util/zip/ZipInputStream;,Ljava/util/zip/GZIPInputStream;,Ljava/util/zip/InflaterInputStream;
+HSPLjava/util/zip/InflaterInputStream;->fill()V+]Ljava/util/zip/Inflater;missing_types]Ljava/io/InputStream;megamorphic_types
+HSPLjava/util/zip/InflaterInputStream;->read()I+]Ljava/util/zip/InflaterInputStream;Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;,Ljava/util/zip/ZipInputStream;,Ljava/util/zip/InflaterInputStream;,Ljava/util/zip/GZIPInputStream;
 HSPLjava/util/zip/InflaterInputStream;->read([BII)I+]Ljava/util/zip/InflaterInputStream;missing_types]Ljava/util/zip/Inflater;missing_types
 HSPLjava/util/zip/ZStreamRef;-><init>(J)V
 HSPLjava/util/zip/ZStreamRef;->address()J
 HSPLjava/util/zip/ZStreamRef;->clear()V
 HSPLjava/util/zip/ZipCoder;-><init>(Ljava/nio/charset/Charset;)V+]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;
-HSPLjava/util/zip/ZipCoder;->decoder()Ljava/nio/charset/CharsetDecoder;+]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
-HSPLjava/util/zip/ZipCoder;->encoder()Ljava/nio/charset/CharsetEncoder;+]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;
+HSPLjava/util/zip/ZipCoder;->decoder()Ljava/nio/charset/CharsetDecoder;+]Ljava/nio/charset/Charset;missing_types]Ljava/nio/charset/CharsetDecoder;missing_types
+HSPLjava/util/zip/ZipCoder;->encoder()Ljava/nio/charset/CharsetEncoder;+]Ljava/nio/charset/Charset;missing_types]Ljava/nio/charset/CharsetEncoder;missing_types
 HSPLjava/util/zip/ZipCoder;->get(Ljava/nio/charset/Charset;)Ljava/util/zip/ZipCoder;
-HSPLjava/util/zip/ZipCoder;->getBytes(Ljava/lang/String;)[B+]Ljava/lang/String;Ljava/lang/String;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;
+HSPLjava/util/zip/ZipCoder;->getBytes(Ljava/lang/String;)[B+]Ljava/lang/String;Ljava/lang/String;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetEncoder;missing_types]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;
 HSPLjava/util/zip/ZipCoder;->isUTF8()Z
-HSPLjava/util/zip/ZipCoder;->toString([BI)Ljava/lang/String;+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
+HSPLjava/util/zip/ZipCoder;->toString([BI)Ljava/lang/String;+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;]Ljava/nio/charset/CharsetDecoder;missing_types
 HSPLjava/util/zip/ZipEntry;-><init>()V
 HSPLjava/util/zip/ZipEntry;-><init>(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/util/zip/ZipEntry;-><init>(Ljava/util/zip/ZipEntry;)V
@@ -7322,17 +7786,25 @@
 HSPLjava/util/zip/ZipEntry;->getSize()J
 HSPLjava/util/zip/ZipEntry;->isDirectory()Z+]Ljava/lang/String;Ljava/lang/String;
 HSPLjava/util/zip/ZipEntry;->setExtra0([BZ)V
+HSPLjava/util/zip/ZipFile$ZipEntryIterator;-><init>(Ljava/util/zip/ZipFile;)V
+HSPLjava/util/zip/ZipFile$ZipEntryIterator;->hasMoreElements()Z+]Ljava/util/zip/ZipFile$ZipEntryIterator;Ljava/util/zip/ZipFile$ZipEntryIterator;
+HSPLjava/util/zip/ZipFile$ZipEntryIterator;->hasNext()Z
+HSPLjava/util/zip/ZipFile$ZipEntryIterator;->next()Ljava/util/zip/ZipEntry;
+HSPLjava/util/zip/ZipFile$ZipEntryIterator;->nextElement()Ljava/lang/Object;+]Ljava/util/zip/ZipFile$ZipEntryIterator;Ljava/util/zip/ZipFile$ZipEntryIterator;
+HSPLjava/util/zip/ZipFile$ZipEntryIterator;->nextElement()Ljava/util/zip/ZipEntry;+]Ljava/util/zip/ZipFile$ZipEntryIterator;Ljava/util/zip/ZipFile$ZipEntryIterator;
 HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;-><init>(Ljava/util/zip/ZipFile;Ljava/util/zip/ZipFile$ZipFileInputStream;Ljava/util/zip/Inflater;I)V
 HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->available()I+]Ljava/util/zip/ZipFile$ZipFileInputStream;Ljava/util/zip/ZipFile$ZipFileInputStream;]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater;
 HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->close()V+]Ljava/util/Map;Ljava/util/WeakHashMap;
 HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->fill()V+]Ljava/io/InputStream;Ljava/util/zip/ZipFile$ZipFileInputStream;]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater;
 HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->finalize()V+]Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;
 HSPLjava/util/zip/ZipFile$ZipFileInputStream;-><init>(Ljava/util/zip/ZipFile;J)V
+HSPLjava/util/zip/ZipFile$ZipFileInputStream;->available()I
 HSPLjava/util/zip/ZipFile$ZipFileInputStream;->close()V+]Ljava/util/Map;Ljava/util/WeakHashMap;
 HSPLjava/util/zip/ZipFile$ZipFileInputStream;->finalize()V+]Ljava/util/zip/ZipFile$ZipFileInputStream;Ljava/util/zip/ZipFile$ZipFileInputStream;
 HSPLjava/util/zip/ZipFile$ZipFileInputStream;->read()I+]Ljava/util/zip/ZipFile$ZipFileInputStream;Ljava/util/zip/ZipFile$ZipFileInputStream;
 HSPLjava/util/zip/ZipFile$ZipFileInputStream;->read([BII)I+]Ljava/util/zip/ZipFile$ZipFileInputStream;Ljava/util/zip/ZipFile$ZipFileInputStream;
 HSPLjava/util/zip/ZipFile$ZipFileInputStream;->size()J
+HSPLjava/util/zip/ZipFile;-><init>(Ljava/io/File;)V
 HSPLjava/util/zip/ZipFile;-><init>(Ljava/io/File;I)V
 HSPLjava/util/zip/ZipFile;-><init>(Ljava/io/File;ILjava/nio/charset/Charset;)V+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
 HSPLjava/util/zip/ZipFile;-><init>(Ljava/lang/String;)V
@@ -7343,18 +7815,35 @@
 HSPLjava/util/zip/ZipFile;->access$1200(J)J
 HSPLjava/util/zip/ZipFile;->access$1300(Ljava/util/zip/ZipFile;)V
 HSPLjava/util/zip/ZipFile;->access$1400(JJJ[BII)I
+HSPLjava/util/zip/ZipFile;->access$200(Ljava/util/zip/ZipFile;)V
+HSPLjava/util/zip/ZipFile;->access$300(Ljava/util/zip/ZipFile;)I
 HSPLjava/util/zip/ZipFile;->access$400(Ljava/util/zip/ZipFile;)J
-HSPLjava/util/zip/ZipFile;->close()V+]Ljava/util/Deque;Ljava/util/ArrayDeque;]Ljava/util/Map;Ljava/util/WeakHashMap;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLjava/util/zip/ZipFile;->access$500(JI)J
+HSPLjava/util/zip/ZipFile;->access$900(Ljava/util/zip/ZipFile;Ljava/lang/String;J)Ljava/util/zip/ZipEntry;
+HSPLjava/util/zip/ZipFile;->close()V+]Ljava/util/Deque;Ljava/util/ArrayDeque;]Ljava/util/Map;Ljava/util/WeakHashMap;,Ljava/util/HashMap;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/io/InputStream;Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
 HSPLjava/util/zip/ZipFile;->ensureOpen()V
 HSPLjava/util/zip/ZipFile;->ensureOpenOrZipException()V
+HSPLjava/util/zip/ZipFile;->entries()Ljava/util/Enumeration;
 HSPLjava/util/zip/ZipFile;->finalize()V+]Ljava/util/zip/ZipFile;Ljava/util/zip/ZipFile;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
 HSPLjava/util/zip/ZipFile;->getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;+]Ljava/util/zip/ZipCoder;Ljava/util/zip/ZipCoder;
 HSPLjava/util/zip/ZipFile;->getInflater()Ljava/util/zip/Inflater;+]Ljava/util/Deque;Ljava/util/ArrayDeque;
 HSPLjava/util/zip/ZipFile;->getInputStream(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;+]Ljava/util/zip/ZipCoder;Ljava/util/zip/ZipCoder;]Ljava/util/Map;Ljava/util/WeakHashMap;
 HSPLjava/util/zip/ZipFile;->getZipEntry(Ljava/lang/String;J)Ljava/util/zip/ZipEntry;+]Ljava/util/zip/ZipEntry;Ljava/util/zip/ZipEntry;]Ljava/util/zip/ZipCoder;Ljava/util/zip/ZipCoder;
 HSPLjava/util/zip/ZipFile;->releaseInflater(Ljava/util/zip/Inflater;)V+]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater;
+HSPLjava/util/zip/ZipInputStream;-><init>(Ljava/io/InputStream;)V
+HSPLjava/util/zip/ZipInputStream;-><init>(Ljava/io/InputStream;Ljava/nio/charset/Charset;)V
+HSPLjava/util/zip/ZipInputStream;->close()V
+HSPLjava/util/zip/ZipInputStream;->closeEntry()V+]Ljava/util/zip/ZipInputStream;Ljava/util/zip/ZipInputStream;
+HSPLjava/util/zip/ZipInputStream;->createZipEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;
+HSPLjava/util/zip/ZipInputStream;->ensureOpen()V
+HSPLjava/util/zip/ZipInputStream;->getNextEntry()Ljava/util/zip/ZipEntry;+]Ljava/util/zip/CRC32;Ljava/util/zip/CRC32;]Ljava/util/zip/ZipInputStream;Ljava/util/zip/ZipInputStream;]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater;
+HSPLjava/util/zip/ZipInputStream;->read([BII)I+]Ljava/util/zip/CRC32;Ljava/util/zip/CRC32;]Ljava/io/InputStream;Ljava/io/PushbackInputStream;
+HSPLjava/util/zip/ZipInputStream;->readEnd(Ljava/util/zip/ZipEntry;)V+]Ljava/util/zip/CRC32;Ljava/util/zip/CRC32;]Ljava/io/PushbackInputStream;Ljava/io/PushbackInputStream;]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater;
+HSPLjava/util/zip/ZipInputStream;->readFully([BII)V+]Ljava/io/InputStream;Ljava/io/PushbackInputStream;
+HSPLjava/util/zip/ZipInputStream;->readLOC()Ljava/util/zip/ZipEntry;+]Ljava/util/zip/ZipEntry;Ljava/util/zip/ZipEntry;]Ljava/util/zip/ZipInputStream;Ljava/util/zip/ZipInputStream;]Ljava/util/zip/ZipCoder;Ljava/util/zip/ZipCoder;
 HSPLjava/util/zip/ZipUtils;->get16([BI)I
 HSPLjava/util/zip/ZipUtils;->get32([BI)J
+HSPLjava/util/zip/ZipUtils;->unixTimeToFileTime(J)Ljava/nio/file/attribute/FileTime;
 HSPLjavax/crypto/Cipher$CipherSpiAndProvider;-><init>(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V
 HSPLjavax/crypto/Cipher$InitParams;-><init>(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/SecureRandom;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;)V
 HSPLjavax/crypto/Cipher$SpiAndProviderUpdater;-><init>(Ljavax/crypto/Cipher;Ljava/security/Provider;Ljavax/crypto/CipherSpi;)V
@@ -7371,18 +7860,23 @@
 HSPLjavax/crypto/Cipher;->checkOpmode(I)V
 HSPLjavax/crypto/Cipher;->chooseProvider(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V+]Ljavax/crypto/Cipher$SpiAndProviderUpdater;Ljavax/crypto/Cipher$SpiAndProviderUpdater;
 HSPLjavax/crypto/Cipher;->createCipher(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher;
+HSPLjavax/crypto/Cipher;->doFinal()[B+]Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;]Ljavax/crypto/CipherSpi;Lcom/android/org/conscrypt/OpenSSLEvpCipherAES$AES$CBC$PKCS5Padding;,Lcom/android/org/conscrypt/OpenSSLEvpCipherAES$AES$CTR;,Landroid/security/keystore2/AndroidKeyStoreUnauthenticatedAESCipherSpi$CBC$PKCS7Padding;
 HSPLjavax/crypto/Cipher;->doFinal([B)[B+]Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;]Ljavax/crypto/CipherSpi;megamorphic_types
 HSPLjavax/crypto/Cipher;->doFinal([BII)[B+]Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;]Ljavax/crypto/CipherSpi;missing_types
+HSPLjavax/crypto/Cipher;->doFinal([BII[BI)I+]Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;]Ljavax/crypto/CipherSpi;Lcom/android/org/conscrypt/OpenSSLEvpCipherAES$AES$CBC$PKCS5Padding;,Lcom/android/org/conscrypt/OpenSSLAeadCipherAES$GCM;
+HSPLjavax/crypto/Cipher;->getBlockSize()I+]Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;]Ljavax/crypto/CipherSpi;missing_types
 HSPLjavax/crypto/Cipher;->getIV()[B+]Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;]Ljavax/crypto/CipherSpi;missing_types
 HSPLjavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;
+HSPLjavax/crypto/Cipher;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher;
+HSPLjavax/crypto/Cipher;->getOutputSize(I)I+]Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;]Ljavax/crypto/CipherSpi;missing_types
 HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;)V+]Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;
 HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/SecureRandom;)V
 HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V+]Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;
 HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
 HSPLjavax/crypto/Cipher;->matchAttribute(Ljava/security/Provider$Service;Ljava/lang/String;Ljava/lang/String;)Z+]Ljava/security/Provider$Service;Ljava/security/Provider$Service;
 HSPLjavax/crypto/Cipher;->tokenizeTransformation(Ljava/lang/String;)[Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/StringTokenizer;Ljava/util/StringTokenizer;
-HSPLjavax/crypto/Cipher;->tryCombinations(Ljavax/crypto/Cipher$InitParams;Ljava/security/Provider;[Ljava/lang/String;)Ljavax/crypto/Cipher$CipherSpiAndProvider;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/security/Provider;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
-HSPLjavax/crypto/Cipher;->tryTransformWithProvider(Ljavax/crypto/Cipher$InitParams;[Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;Ljava/security/Provider$Service;)Ljavax/crypto/Cipher$CipherSpiAndProvider;+]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljavax/crypto/Cipher$InitType;Ljavax/crypto/Cipher$InitType;]Ljavax/crypto/CipherSpi;megamorphic_types
+HSPLjavax/crypto/Cipher;->tryCombinations(Ljavax/crypto/Cipher$InitParams;Ljava/security/Provider;[Ljava/lang/String;)Ljavax/crypto/Cipher$CipherSpiAndProvider;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/security/Provider$Service;missing_types]Ljava/security/Provider;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+HSPLjavax/crypto/Cipher;->tryTransformWithProvider(Ljavax/crypto/Cipher$InitParams;[Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;Ljava/security/Provider$Service;)Ljavax/crypto/Cipher$CipherSpiAndProvider;+]Ljava/security/Provider$Service;missing_types]Ljavax/crypto/Cipher$InitType;Ljavax/crypto/Cipher$InitType;]Ljavax/crypto/CipherSpi;megamorphic_types
 HSPLjavax/crypto/Cipher;->unwrap([BLjava/lang/String;I)Ljava/security/Key;+]Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;]Ljavax/crypto/CipherSpi;Landroid/security/keystore2/AndroidKeyStoreAuthenticatedAESCipherSpi$GCM$NoPadding;
 HSPLjavax/crypto/Cipher;->updateAAD([B)V+]Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;
 HSPLjavax/crypto/Cipher;->updateAAD([BII)V+]Ljavax/crypto/Cipher;Ljavax/crypto/Cipher;]Ljavax/crypto/CipherSpi;missing_types
@@ -7399,7 +7893,7 @@
 HSPLjavax/crypto/JceSecurity;->getVerificationResult(Ljava/security/Provider;)Ljava/lang/Exception;+]Ljava/util/Map;Ljava/util/IdentityHashMap;
 HSPLjavax/crypto/JceSecurity;->verifyProviderJar(Ljava/net/URL;)V
 HSPLjavax/crypto/KeyGenerator;-><init>(Ljava/lang/String;)V+]Ljava/util/List;Lsun/security/jca/ProviderList$ServiceList;
-HSPLjavax/crypto/KeyGenerator;->generateKey()Ljavax/crypto/SecretKey;
+HSPLjavax/crypto/KeyGenerator;->generateKey()Ljavax/crypto/SecretKey;+]Ljavax/crypto/KeyGeneratorSpi;Lcom/android/org/conscrypt/KeyGeneratorImpl$AES;
 HSPLjavax/crypto/KeyGenerator;->getInstance(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
 HSPLjavax/crypto/KeyGenerator;->init(ILjava/security/SecureRandom;)V
 HSPLjavax/crypto/KeyGenerator;->nextSpi(Ljavax/crypto/KeyGeneratorSpi;Z)Ljavax/crypto/KeyGeneratorSpi;+]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/util/Iterator;Lsun/security/jca/ProviderList$ServiceList$1;
@@ -7409,24 +7903,36 @@
 HSPLjavax/crypto/Mac;->chooseProvider(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V+]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/util/List;Lsun/security/jca/ProviderList$ServiceList;]Ljavax/crypto/MacSpi;missing_types]Ljava/util/Iterator;Lsun/security/jca/ProviderList$ServiceList$1;
 HSPLjavax/crypto/Mac;->doFinal()[B+]Ljavax/crypto/MacSpi;missing_types]Ljavax/crypto/Mac;Ljavax/crypto/Mac;
 HSPLjavax/crypto/Mac;->doFinal([B)[B+]Ljavax/crypto/Mac;Ljavax/crypto/Mac;
+HSPLjavax/crypto/Mac;->doFinal([BI)V+]Ljavax/crypto/Mac;Ljavax/crypto/Mac;
 HSPLjavax/crypto/Mac;->getAlgorithm()Ljava/lang/String;
 HSPLjavax/crypto/Mac;->getInstance(Ljava/lang/String;)Ljavax/crypto/Mac;+]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/util/List;Lsun/security/jca/ProviderList$ServiceList;]Ljava/util/Iterator;Lsun/security/jca/ProviderList$ServiceList$1;
-HSPLjavax/crypto/Mac;->getMacLength()I+]Ljavax/crypto/MacSpi;missing_types]Ljavax/crypto/Mac;Ljavax/crypto/Mac;
+HSPLjavax/crypto/Mac;->getMacLength()I+]Ljavax/crypto/Mac;Ljavax/crypto/Mac;]Ljavax/crypto/MacSpi;missing_types
 HSPLjavax/crypto/Mac;->init(Ljava/security/Key;)V+]Ljavax/crypto/MacSpi;Lcom/android/org/conscrypt/OpenSSLMac$HmacSHA256;
 HSPLjavax/crypto/Mac;->update(B)V+]Ljavax/crypto/Mac;Ljavax/crypto/Mac;]Ljavax/crypto/MacSpi;missing_types
 HSPLjavax/crypto/Mac;->update([B)V+]Ljavax/crypto/MacSpi;missing_types]Ljavax/crypto/Mac;Ljavax/crypto/Mac;
-HSPLjavax/crypto/Mac;->update([BII)V+]Ljavax/crypto/MacSpi;missing_types]Ljavax/crypto/Mac;Ljavax/crypto/Mac;
+HSPLjavax/crypto/Mac;->update([BII)V+]Ljavax/crypto/Mac;Ljavax/crypto/Mac;]Ljavax/crypto/MacSpi;missing_types
 HSPLjavax/crypto/MacSpi;-><init>()V
+HSPLjavax/crypto/SecretKeyFactory;-><init>(Ljava/lang/String;)V+]Ljava/util/List;Lsun/security/jca/ProviderList$ServiceList;
+HSPLjavax/crypto/SecretKeyFactory;->generateSecret(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;+]Ljavax/crypto/SecretKeyFactorySpi;Lcom/android/org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithMD5And128BitAESCBCOpenSSL;,Lcom/android/org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2WithHmacSHA1UTF8;
+HSPLjavax/crypto/SecretKeyFactory;->getInstance(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
+HSPLjavax/crypto/SecretKeyFactory;->nextSpi(Ljavax/crypto/SecretKeyFactorySpi;)Ljavax/crypto/SecretKeyFactorySpi;+]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/util/Iterator;Lsun/security/jca/ProviderList$ServiceList$1;
+HSPLjavax/crypto/SecretKeyFactorySpi;-><init>()V
 HSPLjavax/crypto/spec/GCMParameterSpec;-><init>(I[B)V
-HSPLjavax/crypto/spec/GCMParameterSpec;->getIV()[B
+HSPLjavax/crypto/spec/GCMParameterSpec;-><init>(I[BII)V
+HSPLjavax/crypto/spec/GCMParameterSpec;->getIV()[B+][B[B
 HSPLjavax/crypto/spec/GCMParameterSpec;->getTLen()I
 HSPLjavax/crypto/spec/GCMParameterSpec;->init(I[BII)V
 HSPLjavax/crypto/spec/IvParameterSpec;-><init>([B)V
 HSPLjavax/crypto/spec/IvParameterSpec;-><init>([BII)V
-HSPLjavax/crypto/spec/IvParameterSpec;->getIV()[B
-HSPLjavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V
+HSPLjavax/crypto/spec/IvParameterSpec;->getIV()[B+][B[B
+HSPLjavax/crypto/spec/PBEKeySpec;-><init>([C[BII)V+][B[B][C[C
+HSPLjavax/crypto/spec/PBEKeySpec;->getIterationCount()I
+HSPLjavax/crypto/spec/PBEKeySpec;->getKeyLength()I
+HSPLjavax/crypto/spec/PBEKeySpec;->getPassword()[C+][C[C
+HSPLjavax/crypto/spec/PBEKeySpec;->getSalt()[B+][B[B
+HSPLjavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V+][B[B
 HSPLjavax/crypto/spec/SecretKeySpec;->getAlgorithm()Ljava/lang/String;
-HSPLjavax/crypto/spec/SecretKeySpec;->getEncoded()[B
+HSPLjavax/crypto/spec/SecretKeySpec;->getEncoded()[B+][B[B
 HSPLjavax/crypto/spec/SecretKeySpec;->getFormat()Ljava/lang/String;
 HSPLjavax/net/DefaultSocketFactory;-><init>()V
 HSPLjavax/net/DefaultSocketFactory;->createSocket()Ljava/net/Socket;
@@ -7453,7 +7959,7 @@
 HSPLjavax/net/ssl/SNIHostName;-><init>(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;
 HSPLjavax/net/ssl/SNIHostName;->checkHostName()V+]Ljava/lang/String;Ljava/lang/String;
 HSPLjavax/net/ssl/SNIHostName;->getAsciiName()Ljava/lang/String;
-HSPLjavax/net/ssl/SNIServerName;-><init>(I[B)V
+HSPLjavax/net/ssl/SNIServerName;-><init>(I[B)V+][B[B
 HSPLjavax/net/ssl/SNIServerName;->getType()I
 HSPLjavax/net/ssl/SSLContext;-><init>(Ljavax/net/ssl/SSLContextSpi;Ljava/security/Provider;Ljava/lang/String;)V
 HSPLjavax/net/ssl/SSLContext;->getDefault()Ljavax/net/ssl/SSLContext;
@@ -7468,8 +7974,8 @@
 HSPLjavax/net/ssl/SSLEngine;->getSSLParameters()Ljavax/net/ssl/SSLParameters;+]Ljavax/net/ssl/SSLParameters;Ljavax/net/ssl/SSLParameters;]Ljavax/net/ssl/SSLEngine;missing_types
 HSPLjavax/net/ssl/SSLEngine;->setSSLParameters(Ljavax/net/ssl/SSLParameters;)V+]Ljavax/net/ssl/SSLParameters;Ljavax/net/ssl/SSLParameters;]Ljavax/net/ssl/SSLEngine;missing_types
 HSPLjavax/net/ssl/SSLEngine;->wrap([Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;+]Ljavax/net/ssl/SSLEngine;missing_types
-HSPLjavax/net/ssl/SSLEngineResult$HandshakeStatus;->values()[Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
-HSPLjavax/net/ssl/SSLEngineResult$Status;->values()[Ljavax/net/ssl/SSLEngineResult$Status;
+HSPLjavax/net/ssl/SSLEngineResult$HandshakeStatus;->values()[Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;+][Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;[Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
+HSPLjavax/net/ssl/SSLEngineResult$Status;->values()[Ljavax/net/ssl/SSLEngineResult$Status;+][Ljavax/net/ssl/SSLEngineResult$Status;[Ljavax/net/ssl/SSLEngineResult$Status;
 HSPLjavax/net/ssl/SSLEngineResult;-><init>(Ljavax/net/ssl/SSLEngineResult$Status;Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;II)V
 HSPLjavax/net/ssl/SSLEngineResult;->bytesConsumed()I
 HSPLjavax/net/ssl/SSLEngineResult;->bytesProduced()I
@@ -7477,8 +7983,8 @@
 HSPLjavax/net/ssl/SSLEngineResult;->getStatus()Ljavax/net/ssl/SSLEngineResult$Status;
 HSPLjavax/net/ssl/SSLException;-><init>(Ljava/lang/String;)V
 HSPLjavax/net/ssl/SSLParameters;-><init>()V
-HSPLjavax/net/ssl/SSLParameters;->clone([Ljava/lang/String;)[Ljava/lang/String;
-HSPLjavax/net/ssl/SSLParameters;->getApplicationProtocols()[Ljava/lang/String;
+HSPLjavax/net/ssl/SSLParameters;->clone([Ljava/lang/String;)[Ljava/lang/String;+][Ljava/lang/String;[Ljava/lang/String;
+HSPLjavax/net/ssl/SSLParameters;->getApplicationProtocols()[Ljava/lang/String;+][Ljava/lang/String;[Ljava/lang/String;
 HSPLjavax/net/ssl/SSLParameters;->getCipherSuites()[Ljava/lang/String;
 HSPLjavax/net/ssl/SSLParameters;->getEndpointIdentificationAlgorithm()Ljava/lang/String;
 HSPLjavax/net/ssl/SSLParameters;->getNeedClientAuth()Z
@@ -7486,7 +7992,7 @@
 HSPLjavax/net/ssl/SSLParameters;->getServerNames()Ljava/util/List;+]Ljava/util/Map;Ljava/util/LinkedHashMap;
 HSPLjavax/net/ssl/SSLParameters;->getUseCipherSuitesOrder()Z
 HSPLjavax/net/ssl/SSLParameters;->getWantClientAuth()Z
-HSPLjavax/net/ssl/SSLParameters;->setApplicationProtocols([Ljava/lang/String;)V
+HSPLjavax/net/ssl/SSLParameters;->setApplicationProtocols([Ljava/lang/String;)V+][Ljava/lang/String;[Ljava/lang/String;
 HSPLjavax/net/ssl/SSLParameters;->setCipherSuites([Ljava/lang/String;)V
 HSPLjavax/net/ssl/SSLParameters;->setEndpointIdentificationAlgorithm(Ljava/lang/String;)V
 HSPLjavax/net/ssl/SSLParameters;->setProtocols([Ljava/lang/String;)V
@@ -7506,13 +8012,13 @@
 HSPLjavax/net/ssl/SSLSocketFactory;->getSecurityProperty(Ljava/lang/String;)Ljava/lang/String;
 HSPLjavax/net/ssl/SSLSocketFactory;->log(Ljava/lang/String;)V
 HSPLjavax/net/ssl/TrustManagerFactory$1;-><init>()V
-HSPLjavax/net/ssl/TrustManagerFactory$1;->run()Ljava/lang/Object;
+HSPLjavax/net/ssl/TrustManagerFactory$1;->run()Ljava/lang/Object;+]Ljavax/net/ssl/TrustManagerFactory$1;Ljavax/net/ssl/TrustManagerFactory$1;
 HSPLjavax/net/ssl/TrustManagerFactory$1;->run()Ljava/lang/String;
 HSPLjavax/net/ssl/TrustManagerFactory;-><init>(Ljavax/net/ssl/TrustManagerFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V
 HSPLjavax/net/ssl/TrustManagerFactory;->getDefaultAlgorithm()Ljava/lang/String;
 HSPLjavax/net/ssl/TrustManagerFactory;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory;
-HSPLjavax/net/ssl/TrustManagerFactory;->getTrustManagers()[Ljavax/net/ssl/TrustManager;+]Ljavax/net/ssl/TrustManagerFactorySpi;Landroid/security/net/config/RootTrustManagerFactorySpi;
-HSPLjavax/net/ssl/TrustManagerFactory;->init(Ljava/security/KeyStore;)V+]Ljavax/net/ssl/TrustManagerFactorySpi;Landroid/security/net/config/RootTrustManagerFactorySpi;
+HSPLjavax/net/ssl/TrustManagerFactory;->getTrustManagers()[Ljavax/net/ssl/TrustManager;+]Ljavax/net/ssl/TrustManagerFactorySpi;missing_types
+HSPLjavax/net/ssl/TrustManagerFactory;->init(Ljava/security/KeyStore;)V+]Ljavax/net/ssl/TrustManagerFactorySpi;missing_types
 HSPLjavax/net/ssl/TrustManagerFactorySpi;-><init>()V
 HSPLjavax/net/ssl/X509ExtendedKeyManager;-><init>()V
 HSPLjavax/net/ssl/X509ExtendedTrustManager;-><init>()V
@@ -7522,9 +8028,9 @@
 HSPLjavax/security/auth/x500/X500Principal;-><init>([B)V
 HSPLjavax/security/auth/x500/X500Principal;->equals(Ljava/lang/Object;)Z+]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name;
 HSPLjavax/security/auth/x500/X500Principal;->getEncoded()[B+]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name;
+HSPLjavax/security/auth/x500/X500Principal;->getName()Ljava/lang/String;+]Ljavax/security/auth/x500/X500Principal;Ljavax/security/auth/x500/X500Principal;
 HSPLjavax/security/auth/x500/X500Principal;->getName(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name;
 HSPLjavax/security/auth/x500/X500Principal;->hashCode()I+]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name;
-HSPLjavax/xml/parsers/DocumentBuilder;-><init>()V
 HSPLjavax/xml/parsers/DocumentBuilder;->parse(Ljava/io/InputStream;)Lorg/w3c/dom/Document;+]Ljavax/xml/parsers/DocumentBuilder;Lorg/apache/harmony/xml/parsers/DocumentBuilderImpl;
 HSPLjavax/xml/parsers/DocumentBuilderFactory;-><init>()V
 HSPLjavax/xml/parsers/DocumentBuilderFactory;->isCoalescing()Z
@@ -7534,16 +8040,28 @@
 HSPLjavax/xml/parsers/DocumentBuilderFactory;->isValidating()Z
 HSPLjavax/xml/parsers/DocumentBuilderFactory;->newInstance()Ljavax/xml/parsers/DocumentBuilderFactory;
 HSPLjdk/internal/util/Preconditions;->checkIndex(IILjava/util/function/BiFunction;)I
+HSPLlibcore/content/type/MimeMap$Builder$Element;-><init>(Ljava/lang/String;Z)V
+HSPLlibcore/content/type/MimeMap$Builder$Element;->ofExtensionSpec(Ljava/lang/String;)Llibcore/content/type/MimeMap$Builder$Element;
+HSPLlibcore/content/type/MimeMap$Builder$Element;->ofMimeSpec(Ljava/lang/String;)Llibcore/content/type/MimeMap$Builder$Element;
 HSPLlibcore/content/type/MimeMap$Builder;->maybePut(Ljava/util/Map;Llibcore/content/type/MimeMap$Builder$Element;Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Map;Ljava/util/HashMap;
 HSPLlibcore/content/type/MimeMap$MemoizingSupplier;->get()Ljava/lang/Object;
 HSPLlibcore/content/type/MimeMap;-><init>(Ljava/util/Map;Ljava/util/Map;)V
+HSPLlibcore/content/type/MimeMap;->access$000(Ljava/lang/String;)Ljava/lang/String;
 HSPLlibcore/content/type/MimeMap;->checkValidExtension(Ljava/lang/String;)V
 HSPLlibcore/content/type/MimeMap;->checkValidMimeType(Ljava/lang/String;)V
+HSPLlibcore/content/type/MimeMap;->getDefault()Llibcore/content/type/MimeMap;+]Llibcore/content/type/MimeMap$MemoizingSupplier;Llibcore/content/type/MimeMap$MemoizingSupplier;
+HSPLlibcore/content/type/MimeMap;->guessMimeTypeFromExtension(Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Map;Ljava/util/HashMap;
 HSPLlibcore/content/type/MimeMap;->isValidMimeTypeOrExtension(Ljava/lang/String;)Z
 HSPLlibcore/content/type/MimeMap;->toLowerCase(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;
+HSPLlibcore/icu/CollationKeyICU;-><init>(Ljava/lang/String;Landroid/icu/text/CollationKey;)V
+HSPLlibcore/icu/CollationKeyICU;->toByteArray()[B+]Landroid/icu/text/CollationKey;Landroid/icu/text/CollationKey;
+HSPLlibcore/icu/ICU;->getAvailableLocales()[Ljava/util/Locale;
 HSPLlibcore/icu/ICU;->getCurrencyCode(Ljava/lang/String;)Ljava/lang/String;+]Landroid/icu/util/ULocale$Builder;Landroid/icu/util/ULocale$Builder;
 HSPLlibcore/icu/ICU;->getExtendedCalendar(Ljava/util/Locale;Ljava/lang/String;)Lcom/android/icu/util/ExtendedCalendar;
 HSPLlibcore/icu/ICU;->isIsoCountry(Ljava/lang/String;)Z+]Ljava/util/Set;Ljava/util/HashSet;
+HSPLlibcore/icu/ICU;->localeFromIcuLocaleId(Ljava/lang/String;)Ljava/util/Locale;+]Ljava/util/Locale$Builder;Ljava/util/Locale$Builder;]Ljava/util/Map;Ljava/util/Collections$EmptyMap;]Ljava/util/Iterator;Ljava/util/Collections$EmptyIterator;]Ljava/util/Set;Ljava/util/Collections$EmptySet;
+HSPLlibcore/icu/ICU;->localesFromStrings([Ljava/lang/String;)[Ljava/util/Locale;
+HSPLlibcore/icu/ICU;->parseLangScriptRegionAndVariants(Ljava/lang/String;[Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;
 HSPLlibcore/icu/ICU;->setDefaultLocale(Ljava/lang/String;)V
 HSPLlibcore/icu/ICU;->transformIcuDateTimePattern(Ljava/lang/String;)Ljava/lang/String;
 HSPLlibcore/icu/ICU;->transformIcuDateTimePattern_forJavaText(Ljava/lang/String;)Ljava/lang/String;
@@ -7571,8 +8089,8 @@
 HSPLlibcore/io/BlockGuardOs;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
 HSPLlibcore/io/BlockGuardOs;->fdatasync(Ljava/io/FileDescriptor;)V+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
 HSPLlibcore/io/BlockGuardOs;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat;+]Ldalvik/system/BlockGuard$Policy;missing_types
-HSPLlibcore/io/BlockGuardOs;->ftruncate(Ljava/io/FileDescriptor;J)V+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;
-HSPLlibcore/io/BlockGuardOs;->getxattr(Ljava/lang/String;Ljava/lang/String;)[B+]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
+HSPLlibcore/io/BlockGuardOs;->ftruncate(Ljava/io/FileDescriptor;J)V+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
+HSPLlibcore/io/BlockGuardOs;->getxattr(Ljava/lang/String;Ljava/lang/String;)[B+]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;]Ldalvik/system/BlockGuard$Policy;Landroid/os/StrictMode$AndroidBlockGuardPolicy;,Ldalvik/system/BlockGuard$1;
 HSPLlibcore/io/BlockGuardOs;->isInetDomain(I)Z
 HSPLlibcore/io/BlockGuardOs;->isInetSocket(Ljava/io/FileDescriptor;)Z+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;,Llibcore/io/BlockGuardOs;
 HSPLlibcore/io/BlockGuardOs;->isLingerSocket(Ljava/io/FileDescriptor;)Z+]Llibcore/io/Os;missing_types]Landroid/system/StructLinger;Landroid/system/StructLinger;
@@ -7581,20 +8099,21 @@
 HSPLlibcore/io/BlockGuardOs;->isUnixDomain(I)Z
 HSPLlibcore/io/BlockGuardOs;->isUnixSocket(Ljava/io/FileDescriptor;)Z+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;,Llibcore/io/BlockGuardOs;
 HSPLlibcore/io/BlockGuardOs;->lseek(Ljava/io/FileDescriptor;JI)J+]Ldalvik/system/BlockGuard$Policy;missing_types
-HSPLlibcore/io/BlockGuardOs;->mkdir(Ljava/lang/String;I)V+]Ldalvik/system/BlockGuard$VmPolicy;Landroid/os/StrictMode$5;,Ldalvik/system/BlockGuard$2;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
+HSPLlibcore/io/BlockGuardOs;->lstat(Ljava/lang/String;)Landroid/system/StructStat;+]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;
+HSPLlibcore/io/BlockGuardOs;->mkdir(Ljava/lang/String;I)V+]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;,Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
 HSPLlibcore/io/BlockGuardOs;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor;+]Ldalvik/system/BlockGuard$VmPolicy;missing_types]Ldalvik/system/BlockGuard$Policy;missing_types
 HSPLlibcore/io/BlockGuardOs;->poll([Landroid/system/StructPollfd;I)I+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
 HSPLlibcore/io/BlockGuardOs;->posix_fallocate(Ljava/io/FileDescriptor;JJ)V+]Ldalvik/system/BlockGuard$Policy;Landroid/os/StrictMode$AndroidBlockGuardPolicy;,Ldalvik/system/BlockGuard$1;
 HSPLlibcore/io/BlockGuardOs;->read(Ljava/io/FileDescriptor;[BII)I+]Ldalvik/system/BlockGuard$Policy;missing_types
-HSPLlibcore/io/BlockGuardOs;->readlink(Ljava/lang/String;)Ljava/lang/String;+]Ldalvik/system/BlockGuard$VmPolicy;Landroid/os/StrictMode$5;,Ldalvik/system/BlockGuard$2;]Ldalvik/system/BlockGuard$Policy;Landroid/os/StrictMode$AndroidBlockGuardPolicy;,Ldalvik/system/BlockGuard$1;
-HSPLlibcore/io/BlockGuardOs;->recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;
+HSPLlibcore/io/BlockGuardOs;->readlink(Ljava/lang/String;)Ljava/lang/String;+]Ldalvik/system/BlockGuard$VmPolicy;Landroid/os/StrictMode$5;,Ldalvik/system/BlockGuard$2;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
+HSPLlibcore/io/BlockGuardOs;->recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
 HSPLlibcore/io/BlockGuardOs;->remove(Ljava/lang/String;)V+]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;,Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;missing_types
 HSPLlibcore/io/BlockGuardOs;->rename(Ljava/lang/String;Ljava/lang/String;)V+]Ldalvik/system/BlockGuard$Policy;missing_types]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;,Landroid/os/StrictMode$5;
 HSPLlibcore/io/BlockGuardOs;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;
 HSPLlibcore/io/BlockGuardOs;->socket(III)Ljava/io/FileDescriptor;
 HSPLlibcore/io/BlockGuardOs;->socketpair(IIILjava/io/FileDescriptor;Ljava/io/FileDescriptor;)V
 HSPLlibcore/io/BlockGuardOs;->stat(Ljava/lang/String;)Landroid/system/StructStat;+]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;,Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;missing_types
-HSPLlibcore/io/BlockGuardOs;->statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs;+]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;,Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
+HSPLlibcore/io/BlockGuardOs;->statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs;+]Ldalvik/system/BlockGuard$VmPolicy;Landroid/os/StrictMode$5;,Ldalvik/system/BlockGuard$2;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
 HSPLlibcore/io/BlockGuardOs;->tagSocket(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor;+]Ldalvik/system/SocketTagger;Lcom/android/server/NetworkManagementSocketTagger;
 HSPLlibcore/io/BlockGuardOs;->write(Ljava/io/FileDescriptor;[BII)I+]Ldalvik/system/BlockGuard$Policy;missing_types
 HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection$1;-><init>(Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;Ljava/io/InputStream;)V
@@ -7606,21 +8125,21 @@
 HSPLlibcore/io/ClassPathURLStreamHandler;-><init>(Ljava/lang/String;)V
 HSPLlibcore/io/ClassPathURLStreamHandler;->access$000(Llibcore/io/ClassPathURLStreamHandler;)Ljava/util/jar/JarFile;
 HSPLlibcore/io/ClassPathURLStreamHandler;->getEntryUrlOrNull(Ljava/lang/String;)Ljava/net/URL;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/jar/JarFile;Ljava/util/jar/JarFile;
-HSPLlibcore/io/ClassPathURLStreamHandler;->isEntryStored(Ljava/lang/String;)Z
+HSPLlibcore/io/ClassPathURLStreamHandler;->isEntryStored(Ljava/lang/String;)Z+]Ljava/util/jar/JarFile;Ljava/util/jar/JarFile;]Ljava/util/zip/ZipEntry;Ljava/util/jar/JarFile$JarFileEntry;
 HSPLlibcore/io/ClassPathURLStreamHandler;->openConnection(Ljava/net/URL;)Ljava/net/URLConnection;
 HSPLlibcore/io/ForwardingOs;-><init>(Llibcore/io/Os;)V
 HSPLlibcore/io/ForwardingOs;->accept(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)Ljava/io/FileDescriptor;+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->access(Ljava/lang/String;I)Z+]Llibcore/io/Os;Llibcore/io/Linux;,Llibcore/io/BlockGuardOs;
 HSPLlibcore/io/ForwardingOs;->android_fdsan_exchange_owner_tag(Ljava/io/FileDescriptor;JJ)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->android_getaddrinfo(Ljava/lang/String;Landroid/system/StructAddrinfo;I)[Ljava/net/InetAddress;+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
-HSPLlibcore/io/ForwardingOs;->bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
+HSPLlibcore/io/ForwardingOs;->bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V+]Llibcore/io/Os;Llibcore/io/Linux;,Llibcore/io/BlockGuardOs;
 HSPLlibcore/io/ForwardingOs;->bind(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->capget(Landroid/system/StructCapUserHeader;)[Landroid/system/StructCapUserData;
 HSPLlibcore/io/ForwardingOs;->chmod(Ljava/lang/String;I)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->close(Ljava/io/FileDescriptor;)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->dup2(Ljava/io/FileDescriptor;I)Ljava/io/FileDescriptor;+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
-HSPLlibcore/io/ForwardingOs;->fcntlInt(Ljava/io/FileDescriptor;II)I+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
+HSPLlibcore/io/ForwardingOs;->fcntlInt(Ljava/io/FileDescriptor;II)I+]Llibcore/io/Os;Llibcore/io/Linux;,Llibcore/io/BlockGuardOs;
 HSPLlibcore/io/ForwardingOs;->fcntlVoid(Ljava/io/FileDescriptor;I)I+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->fdatasync(Ljava/io/FileDescriptor;)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat;+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
@@ -7640,8 +8159,9 @@
 HSPLlibcore/io/ForwardingOs;->getxattr(Ljava/lang/String;Ljava/lang/String;)[B+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->if_nametoindex(Ljava/lang/String;)I+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->ioctlInt(Ljava/io/FileDescriptor;I)I+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
-HSPLlibcore/io/ForwardingOs;->listen(Ljava/io/FileDescriptor;I)V
-HSPLlibcore/io/ForwardingOs;->lseek(Ljava/io/FileDescriptor;JI)J+]Llibcore/io/Os;Llibcore/io/Linux;,Llibcore/io/BlockGuardOs;
+HSPLlibcore/io/ForwardingOs;->listen(Ljava/io/FileDescriptor;I)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
+HSPLlibcore/io/ForwardingOs;->lseek(Ljava/io/FileDescriptor;JI)J+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
+HSPLlibcore/io/ForwardingOs;->lstat(Ljava/lang/String;)Landroid/system/StructStat;+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->mkdir(Ljava/lang/String;I)V+]Llibcore/io/Os;Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->mmap(JJIILjava/io/FileDescriptor;J)J+]Llibcore/io/Os;Llibcore/io/Linux;,Llibcore/io/BlockGuardOs;
 HSPLlibcore/io/ForwardingOs;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor;+]Llibcore/io/Os;Llibcore/io/Linux;,Llibcore/io/BlockGuardOs;
@@ -7663,7 +8183,7 @@
 HSPLlibcore/io/ForwardingOs;->socket(III)Ljava/io/FileDescriptor;+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->socketpair(IIILjava/io/FileDescriptor;Ljava/io/FileDescriptor;)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->stat(Ljava/lang/String;)Landroid/system/StructStat;+]Llibcore/io/Os;Llibcore/io/Linux;,Llibcore/io/BlockGuardOs;
-HSPLlibcore/io/ForwardingOs;->statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs;+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
+HSPLlibcore/io/ForwardingOs;->statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs;+]Llibcore/io/Os;Llibcore/io/Linux;,Llibcore/io/BlockGuardOs;
 HSPLlibcore/io/ForwardingOs;->strerror(I)Ljava/lang/String;+]Llibcore/io/Os;Llibcore/io/Linux;,Llibcore/io/BlockGuardOs;
 HSPLlibcore/io/ForwardingOs;->sysconf(I)J+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
 HSPLlibcore/io/ForwardingOs;->write(Ljava/io/FileDescriptor;[BII)I+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux;
@@ -7673,7 +8193,7 @@
 HSPLlibcore/io/IoBridge;->closeAndSignalBlockedThreads(Ljava/io/FileDescriptor;)V+]Llibcore/io/Os;missing_types]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;
 HSPLlibcore/io/IoBridge;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;II)V
 HSPLlibcore/io/IoBridge;->connectErrno(Ljava/io/FileDescriptor;Ljava/net/InetAddress;II)V+]Llibcore/io/Os;missing_types]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit$3;,Ljava/util/concurrent/TimeUnit$1;
-HSPLlibcore/io/IoBridge;->createMessageForException(Ljava/io/FileDescriptor;Ljava/net/InetAddress;IILjava/lang/Exception;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;]Ljava/lang/Exception;Landroid/system/ErrnoException;
+HSPLlibcore/io/IoBridge;->createMessageForException(Ljava/io/FileDescriptor;Ljava/net/InetAddress;IILjava/lang/Exception;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Exception;Landroid/system/ErrnoException;]Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;
 HSPLlibcore/io/IoBridge;->getLocalInetSocketAddress(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;+]Llibcore/io/Os;missing_types
 HSPLlibcore/io/IoBridge;->getSocketOption(Ljava/io/FileDescriptor;I)Ljava/lang/Object;
 HSPLlibcore/io/IoBridge;->getSocketOptionErrno(Ljava/io/FileDescriptor;I)Ljava/lang/Object;+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;]Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;
@@ -7718,26 +8238,26 @@
 HSPLlibcore/io/Memory;->pokeShort(JSZ)V
 HSPLlibcore/io/Os;->compareAndSetDefault(Llibcore/io/Os;Llibcore/io/Os;)Z
 HSPLlibcore/io/Os;->getDefault()Llibcore/io/Os;
-HSPLlibcore/net/InetAddressUtils;->parseNumericAddress(Ljava/lang/String;)Ljava/net/InetAddress;
+HSPLlibcore/net/InetAddressUtils;->parseNumericAddress(Ljava/lang/String;)Ljava/net/InetAddress;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLlibcore/net/InetAddressUtils;->parseNumericAddressNoThrow(Ljava/lang/String;)Ljava/net/InetAddress;+]Llibcore/io/Os;missing_types
 HSPLlibcore/net/InetAddressUtils;->parseNumericAddressNoThrowStripOptionalBrackets(Ljava/lang/String;)Ljava/net/InetAddress;+]Ljava/lang/String;Ljava/lang/String;
 HSPLlibcore/net/NetworkSecurityPolicy;-><init>()V
 HSPLlibcore/net/NetworkSecurityPolicy;->getInstance()Llibcore/net/NetworkSecurityPolicy;
 HSPLlibcore/net/NetworkSecurityPolicy;->setInstance(Llibcore/net/NetworkSecurityPolicy;)V
 HSPLlibcore/net/event/NetworkEventDispatcher;->addListener(Llibcore/net/event/NetworkEventListener;)V
+HSPLlibcore/net/event/NetworkEventDispatcher;->dispatchNetworkConfigurationChange()V
 HSPLlibcore/net/event/NetworkEventDispatcher;->getInstance()Llibcore/net/event/NetworkEventDispatcher;
-HSPLlibcore/net/event/NetworkEventDispatcher;->onNetworkConfigurationChanged()V+]Ljava/util/List;Ljava/util/concurrent/CopyOnWriteArrayList;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Llibcore/net/event/NetworkEventListener;Lcom/android/okhttp/ConfigAwareConnectionPool$1;
 HSPLlibcore/net/event/NetworkEventListener;-><init>()V
 HSPLlibcore/net/http/HttpDate$1;->initialValue()Ljava/lang/Object;
 HSPLlibcore/net/http/HttpDate$1;->initialValue()Ljava/text/DateFormat;+]Ljava/text/DateFormat;Ljava/text/SimpleDateFormat;
 HSPLlibcore/net/http/HttpDate;->parse(Ljava/lang/String;)Ljava/util/Date;+]Ljava/text/SimpleDateFormat;Ljava/text/SimpleDateFormat;]Ljava/lang/ThreadLocal;Llibcore/net/http/HttpDate$1;]Ljava/text/DateFormat;Ljava/text/SimpleDateFormat;
 HSPLlibcore/reflect/AnnotationFactory;-><init>(Ljava/lang/Class;[Llibcore/reflect/AnnotationMember;)V+]Llibcore/reflect/AnnotationMember;Llibcore/reflect/AnnotationMember;
 HSPLlibcore/reflect/AnnotationFactory;->createAnnotation(Ljava/lang/Class;[Llibcore/reflect/AnnotationMember;)Ljava/lang/annotation/Annotation;+]Ljava/lang/Class;Ljava/lang/Class;
-HSPLlibcore/reflect/AnnotationFactory;->getElementsDescription(Ljava/lang/Class;)[Llibcore/reflect/AnnotationMember;+]Ljava/util/Map;Ljava/util/WeakHashMap;]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;]Ljava/lang/Class;Ljava/lang/Class;
+HSPLlibcore/reflect/AnnotationFactory;->getElementsDescription(Ljava/lang/Class;)[Llibcore/reflect/AnnotationMember;+]Ljava/util/Map;Ljava/util/WeakHashMap;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;
 HSPLlibcore/reflect/AnnotationFactory;->invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;]Llibcore/reflect/AnnotationMember;Llibcore/reflect/AnnotationMember;]Llibcore/reflect/AnnotationFactory;Llibcore/reflect/AnnotationFactory;
 HSPLlibcore/reflect/AnnotationMember;-><init>(Ljava/lang/String;Ljava/lang/Object;)V+]Ljava/lang/Object;megamorphic_types]Ljava/lang/Class;Ljava/lang/Class;
 HSPLlibcore/reflect/AnnotationMember;-><init>(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Method;)V
-HSPLlibcore/reflect/AnnotationMember;->copyValue()Ljava/lang/Object;+]Ljava/lang/Object;missing_types
+HSPLlibcore/reflect/AnnotationMember;->copyValue()Ljava/lang/Object;+]Ljava/lang/Object;missing_types][Ljava/lang/Object;missing_types][I[I
 HSPLlibcore/reflect/AnnotationMember;->setDefinition(Llibcore/reflect/AnnotationMember;)Llibcore/reflect/AnnotationMember;
 HSPLlibcore/reflect/AnnotationMember;->validateValue()Ljava/lang/Object;+]Ljava/lang/Object;megamorphic_types]Llibcore/reflect/AnnotationMember;Llibcore/reflect/AnnotationMember;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLlibcore/reflect/GenericArrayTypeImpl;->getGenericComponentType()Ljava/lang/reflect/Type;+]Llibcore/reflect/ParameterizedTypeImpl;Llibcore/reflect/ParameterizedTypeImpl;
@@ -7771,7 +8291,7 @@
 HSPLlibcore/reflect/ListOfVariables;->add(Ljava/lang/reflect/TypeVariable;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLlibcore/reflect/ListOfVariables;->getArray()[Ljava/lang/reflect/TypeVariable;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
 HSPLlibcore/reflect/ParameterizedTypeImpl;-><init>(Llibcore/reflect/ParameterizedTypeImpl;Ljava/lang/String;Llibcore/reflect/ListOfTypes;Ljava/lang/ClassLoader;)V
-HSPLlibcore/reflect/ParameterizedTypeImpl;->getActualTypeArguments()[Ljava/lang/reflect/Type;+]Llibcore/reflect/ListOfTypes;Llibcore/reflect/ListOfTypes;
+HSPLlibcore/reflect/ParameterizedTypeImpl;->getActualTypeArguments()[Ljava/lang/reflect/Type;+]Llibcore/reflect/ListOfTypes;Llibcore/reflect/ListOfTypes;][Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;
 HSPLlibcore/reflect/ParameterizedTypeImpl;->getOwnerType()Ljava/lang/reflect/Type;+]Llibcore/reflect/ParameterizedTypeImpl;Llibcore/reflect/ParameterizedTypeImpl;]Ljava/lang/Class;Ljava/lang/Class;
 HSPLlibcore/reflect/ParameterizedTypeImpl;->getRawType()Ljava/lang/Class;
 HSPLlibcore/reflect/ParameterizedTypeImpl;->getRawType()Ljava/lang/reflect/Type;+]Llibcore/reflect/ParameterizedTypeImpl;Llibcore/reflect/ParameterizedTypeImpl;
@@ -7779,7 +8299,7 @@
 HSPLlibcore/reflect/TypeVariableImpl;-><init>(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)V
 HSPLlibcore/reflect/TypeVariableImpl;-><init>(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;Llibcore/reflect/ListOfTypes;)V
 HSPLlibcore/reflect/TypeVariableImpl;->equals(Ljava/lang/Object;)Z+]Ljava/lang/reflect/TypeVariable;Llibcore/reflect/TypeVariableImpl;]Llibcore/reflect/TypeVariableImpl;Llibcore/reflect/TypeVariableImpl;]Ljava/lang/Object;Ljava/lang/Class;,Ljava/lang/reflect/Method;
-HSPLlibcore/reflect/TypeVariableImpl;->findFormalVar(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)Ljava/lang/reflect/TypeVariable;+]Ljava/lang/reflect/TypeVariable;Llibcore/reflect/TypeVariableImpl;]Ljava/lang/reflect/GenericDeclaration;Ljava/lang/Class;,Ljava/lang/reflect/Method;,Ljava/lang/reflect/Constructor;
+HSPLlibcore/reflect/TypeVariableImpl;->findFormalVar(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)Ljava/lang/reflect/TypeVariable;+]Ljava/lang/reflect/TypeVariable;Llibcore/reflect/TypeVariableImpl;]Ljava/lang/reflect/GenericDeclaration;Ljava/lang/Class;,Ljava/lang/reflect/Constructor;,Ljava/lang/reflect/Method;
 HSPLlibcore/reflect/TypeVariableImpl;->getGenericDeclaration()Ljava/lang/reflect/GenericDeclaration;+]Llibcore/reflect/TypeVariableImpl;Llibcore/reflect/TypeVariableImpl;
 HSPLlibcore/reflect/TypeVariableImpl;->getName()Ljava/lang/String;
 HSPLlibcore/reflect/TypeVariableImpl;->hashCode()I+]Ljava/lang/String;Ljava/lang/String;]Llibcore/reflect/TypeVariableImpl;Llibcore/reflect/TypeVariableImpl;]Ljava/lang/Object;Ljava/lang/Class;,Ljava/lang/reflect/Method;
@@ -7791,9 +8311,9 @@
 HSPLlibcore/util/BasicLruCache;->create(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLlibcore/util/BasicLruCache;->entryEvicted(Ljava/lang/Object;Ljava/lang/Object;)V
 HSPLlibcore/util/BasicLruCache;->evictAll()V
-HSPLlibcore/util/BasicLruCache;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Llibcore/util/BasicLruCache;Llibcore/util/BasicLruCache;,Ljava/lang/Enum$1;,Ljava/time/zone/IcuZoneRulesProvider$ZoneRulesCache;,Llibcore/icu/TimeZoneNames$ZoneStringsCache;]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
+HSPLlibcore/util/BasicLruCache;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Llibcore/util/BasicLruCache;Ljava/lang/Enum$1;,Llibcore/util/BasicLruCache;,Ljava/time/zone/IcuZoneRulesProvider$ZoneRulesCache;,Llibcore/icu/TimeZoneNames$ZoneStringsCache;]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
 HSPLlibcore/util/BasicLruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
-HSPLlibcore/util/BasicLruCache;->trimToSize(I)V+]Llibcore/util/BasicLruCache;Ljava/lang/Enum$1;,Llibcore/util/BasicLruCache;]Ljava/util/Map$Entry;Ljava/util/LinkedHashMap$LinkedHashMapEntry;]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
+HSPLlibcore/util/BasicLruCache;->trimToSize(I)V+]Llibcore/util/BasicLruCache;Llibcore/util/BasicLruCache;,Ljava/lang/Enum$1;]Ljava/util/Map$Entry;Ljava/util/LinkedHashMap$LinkedHashMapEntry;]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
 HSPLlibcore/util/CollectionUtils;->removeDuplicates(Ljava/util/List;Ljava/util/Comparator;)V+]Ljava/util/Comparator;Ljava/lang/reflect/Method$1;]Ljava/util/List;Ljava/util/ArrayList$SubList;,Ljava/util/ArrayList;
 HSPLlibcore/util/FP16;->ceil(S)S
 HSPLlibcore/util/FP16;->floor(S)S
@@ -7826,20 +8346,20 @@
 HSPLlibcore/util/ZoneInfo;->clone()Ljava/lang/Object;
 HSPLlibcore/util/ZoneInfo;->createZoneInfo(Lcom/android/i18n/timezone/ZoneInfoData;)Llibcore/util/ZoneInfo;
 HSPLlibcore/util/ZoneInfo;->createZoneInfo(Lcom/android/i18n/timezone/ZoneInfoData;J)Llibcore/util/ZoneInfo;+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData;]Ljava/lang/Integer;Ljava/lang/Integer;
+HSPLlibcore/util/ZoneInfo;->getDSTSavings()I
 HSPLlibcore/util/ZoneInfo;->getOffset(J)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData;
 HSPLlibcore/util/ZoneInfo;->getOffsetsByUtcTime(J[I)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData;
 HSPLlibcore/util/ZoneInfo;->getRawOffset()I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData;
 HSPLlibcore/util/ZoneInfo;->hasSameRules(Ljava/util/TimeZone;)Z+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData;]Llibcore/util/ZoneInfo;Llibcore/util/ZoneInfo;
 HSPLlibcore/util/ZoneInfo;->hashCode()I
 HSPLlibcore/util/ZoneInfo;->inDaylightTime(Ljava/util/Date;)Z+]Ljava/util/Date;missing_types]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData;
-HSPLorg/apache/harmony/dalvik/ddmc/Chunk;-><init>(ILjava/nio/ByteBuffer;)V
+HSPLorg/apache/harmony/dalvik/ddmc/Chunk;-><init>(ILjava/nio/ByteBuffer;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLorg/apache/harmony/dalvik/ddmc/Chunk;-><init>(I[BII)V
-HSPLorg/apache/harmony/dalvik/ddmc/ChunkHandler;->putString(Ljava/nio/ByteBuffer;Ljava/lang/String;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLorg/apache/harmony/dalvik/ddmc/DdmServer;->broadcast(I)V+]Lorg/apache/harmony/dalvik/ddmc/ChunkHandler;megamorphic_types]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/Iterator;Ljava/util/HashMap$ValueIterator;
-HSPLorg/apache/harmony/dalvik/ddmc/DdmServer;->dispatch(I[BII)Lorg/apache/harmony/dalvik/ddmc/Chunk;
+HSPLorg/apache/harmony/dalvik/ddmc/DdmServer;->dispatch(I[BII)Lorg/apache/harmony/dalvik/ddmc/Chunk;+]Lorg/apache/harmony/dalvik/ddmc/ChunkHandler;Landroid/ddm/DdmHandleProfiling;,Landroid/ddm/DdmHandleHello;]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLorg/apache/harmony/dalvik/ddmc/DdmServer;->sendChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)V
 HSPLorg/apache/harmony/xml/dom/CharacterDataImpl;->getData()Ljava/lang/String;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;
-HSPLorg/apache/harmony/xml/dom/CharacterDataImpl;->getNodeValue()Ljava/lang/String;+]Lorg/apache/harmony/xml/dom/CharacterDataImpl;Lorg/apache/harmony/xml/dom/CDATASectionImpl;,Lorg/apache/harmony/xml/dom/TextImpl;
+HSPLorg/apache/harmony/xml/dom/CharacterDataImpl;->getNodeValue()Ljava/lang/String;+]Lorg/apache/harmony/xml/dom/CharacterDataImpl;Lorg/apache/harmony/xml/dom/TextImpl;,Lorg/apache/harmony/xml/dom/CDATASectionImpl;
 HSPLorg/apache/harmony/xml/dom/DocumentImpl;-><init>(Lorg/apache/harmony/xml/dom/DOMImplementationImpl;Ljava/lang/String;Ljava/lang/String;Lorg/w3c/dom/DocumentType;Ljava/lang/String;)V
 HSPLorg/apache/harmony/xml/dom/DocumentImpl;->getDocumentElement()Lorg/w3c/dom/Element;+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
 HSPLorg/apache/harmony/xml/dom/DocumentImpl;->insertChildAt(Lorg/w3c/dom/Node;I)Lorg/w3c/dom/Node;+]Lorg/apache/harmony/xml/dom/DocumentImpl;Lorg/apache/harmony/xml/dom/DocumentImpl;
@@ -7854,8 +8374,8 @@
 HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->getChildNodes()Lorg/w3c/dom/NodeList;+]Lorg/apache/harmony/xml/dom/NodeListImpl;Lorg/apache/harmony/xml/dom/NodeListImpl;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
 HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->getFirstChild()Lorg/w3c/dom/Node;+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->getLastChild()Lorg/w3c/dom/Node;+]Ljava/util/List;Ljava/util/ArrayList;
-HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->getTextContent()Ljava/lang/String;+]Lorg/w3c/dom/Node;Lorg/apache/harmony/xml/dom/CDATASectionImpl;,Lorg/apache/harmony/xml/dom/TextImpl;,Lorg/apache/harmony/xml/dom/ElementImpl;]Lorg/apache/harmony/xml/dom/InnerNodeImpl;Lorg/apache/harmony/xml/dom/ElementImpl;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
-HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->hasTextContent(Lorg/w3c/dom/Node;)Z+]Lorg/w3c/dom/Node;Lorg/apache/harmony/xml/dom/CDATASectionImpl;,Lorg/apache/harmony/xml/dom/TextImpl;,Lorg/apache/harmony/xml/dom/ElementImpl;,Lorg/apache/harmony/xml/dom/CommentImpl;
+HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->getTextContent()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lorg/w3c/dom/Node;Lorg/apache/harmony/xml/dom/TextImpl;,Lorg/apache/harmony/xml/dom/ElementImpl;,Lorg/apache/harmony/xml/dom/CDATASectionImpl;]Lorg/apache/harmony/xml/dom/InnerNodeImpl;Lorg/apache/harmony/xml/dom/ElementImpl;
+HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->hasTextContent(Lorg/w3c/dom/Node;)Z+]Lorg/w3c/dom/Node;Lorg/apache/harmony/xml/dom/TextImpl;,Lorg/apache/harmony/xml/dom/ElementImpl;,Lorg/apache/harmony/xml/dom/CDATASectionImpl;,Lorg/apache/harmony/xml/dom/CommentImpl;
 HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->insertChildAt(Lorg/w3c/dom/Node;I)Lorg/w3c/dom/Node;+]Lorg/apache/harmony/xml/dom/LeafNodeImpl;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
 HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->isParentOf(Lorg/w3c/dom/Node;)Z
 HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->refreshIndices(I)V+]Ljava/util/List;Ljava/util/ArrayList;
@@ -7863,7 +8383,7 @@
 HSPLorg/apache/harmony/xml/dom/LeafNodeImpl;->getNextSibling()Lorg/w3c/dom/Node;+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLorg/apache/harmony/xml/dom/LeafNodeImpl;->isParentOf(Lorg/w3c/dom/Node;)Z
 HSPLorg/apache/harmony/xml/dom/NodeImpl;-><init>(Lorg/apache/harmony/xml/dom/DocumentImpl;)V
-HSPLorg/apache/harmony/xml/dom/NodeImpl;->getTextContent()Ljava/lang/String;+]Lorg/apache/harmony/xml/dom/NodeImpl;Lorg/apache/harmony/xml/dom/CDATASectionImpl;,Lorg/apache/harmony/xml/dom/TextImpl;,Lorg/apache/harmony/xml/dom/AttrImpl;
+HSPLorg/apache/harmony/xml/dom/NodeImpl;->getTextContent()Ljava/lang/String;+]Lorg/apache/harmony/xml/dom/NodeImpl;Lorg/apache/harmony/xml/dom/TextImpl;,Lorg/apache/harmony/xml/dom/AttrImpl;,Lorg/apache/harmony/xml/dom/CDATASectionImpl;
 HSPLorg/apache/harmony/xml/dom/NodeListImpl;-><init>()V
 HSPLorg/apache/harmony/xml/dom/NodeListImpl;->add(Lorg/apache/harmony/xml/dom/NodeImpl;)V+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLorg/apache/harmony/xml/dom/NodeListImpl;->getLength()I+]Ljava/util/List;Ljava/util/ArrayList;
@@ -7872,13 +8392,9 @@
 HSPLorg/apache/harmony/xml/parsers/DocumentBuilderFactoryImpl;-><init>()V
 HSPLorg/apache/harmony/xml/parsers/DocumentBuilderFactoryImpl;->newDocumentBuilder()Ljavax/xml/parsers/DocumentBuilder;+]Lorg/apache/harmony/xml/parsers/DocumentBuilderImpl;Lorg/apache/harmony/xml/parsers/DocumentBuilderImpl;]Lorg/apache/harmony/xml/parsers/DocumentBuilderFactoryImpl;Lorg/apache/harmony/xml/parsers/DocumentBuilderFactoryImpl;
 HSPLorg/apache/harmony/xml/parsers/DocumentBuilderImpl;-><clinit>()V
-HSPLorg/apache/harmony/xml/parsers/DocumentBuilderImpl;-><init>()V
-HSPLorg/apache/harmony/xml/parsers/DocumentBuilderImpl;->setCoalescing(Z)V
-HSPLorg/apache/harmony/xml/parsers/DocumentBuilderImpl;->setIgnoreComments(Z)V
-HSPLorg/apache/harmony/xml/parsers/DocumentBuilderImpl;->setIgnoreElementContentWhitespace(Z)V
-HSPLorg/apache/harmony/xml/parsers/DocumentBuilderImpl;->setNamespaceAware(Z)V
 HSPLorg/json/JSON;->checkDouble(D)D
 HSPLorg/json/JSON;->toBoolean(Ljava/lang/Object;)Ljava/lang/Boolean;+]Ljava/lang/String;Ljava/lang/String;
+HSPLorg/json/JSON;->toDouble(Ljava/lang/Object;)Ljava/lang/Double;+]Ljava/lang/Number;Ljava/lang/Integer;
 HSPLorg/json/JSON;->toInteger(Ljava/lang/Object;)Ljava/lang/Integer;+]Ljava/lang/Number;Ljava/lang/Double;,Ljava/lang/Long;
 HSPLorg/json/JSON;->toLong(Ljava/lang/Object;)Ljava/lang/Long;+]Ljava/lang/Number;Ljava/lang/Integer;,Ljava/lang/Double;
 HSPLorg/json/JSON;->toString(Ljava/lang/Object;)Ljava/lang/String;
@@ -7887,16 +8403,22 @@
 HSPLorg/json/JSONArray;-><init>(Ljava/util/Collection;)V+]Ljava/util/Collection;megamorphic_types]Ljava/util/Iterator;megamorphic_types]Lorg/json/JSONArray;Lorg/json/JSONArray;
 HSPLorg/json/JSONArray;-><init>(Lorg/json/JSONTokener;)V+]Lorg/json/JSONTokener;Lorg/json/JSONTokener;
 HSPLorg/json/JSONArray;->get(I)Ljava/lang/Object;+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLorg/json/JSONArray;->getInt(I)I+]Ljava/lang/Integer;Ljava/lang/Integer;]Lorg/json/JSONArray;Lorg/json/JSONArray;
+HSPLorg/json/JSONArray;->getJSONArray(I)Lorg/json/JSONArray;+]Lorg/json/JSONArray;Lorg/json/JSONArray;
 HSPLorg/json/JSONArray;->getJSONObject(I)Lorg/json/JSONObject;+]Lorg/json/JSONArray;missing_types
 HSPLorg/json/JSONArray;->getString(I)Ljava/lang/String;+]Lorg/json/JSONArray;Lorg/json/JSONArray;
 HSPLorg/json/JSONArray;->length()I+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLorg/json/JSONArray;->opt(I)Ljava/lang/Object;+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLorg/json/JSONArray;->optJSONObject(I)Lorg/json/JSONObject;+]Lorg/json/JSONArray;Lorg/json/JSONArray;
+HSPLorg/json/JSONArray;->optString(I)Ljava/lang/String;+]Lorg/json/JSONArray;Lorg/json/JSONArray;
+HSPLorg/json/JSONArray;->optString(ILjava/lang/String;)Ljava/lang/String;+]Lorg/json/JSONArray;Lorg/json/JSONArray;
+HSPLorg/json/JSONArray;->put(I)Lorg/json/JSONArray;+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLorg/json/JSONArray;->put(J)Lorg/json/JSONArray;+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLorg/json/JSONArray;->toString()Ljava/lang/String;+]Lorg/json/JSONStringer;Lorg/json/JSONStringer;]Lorg/json/JSONArray;Lorg/json/JSONArray;
 HSPLorg/json/JSONArray;->writeTo(Lorg/json/JSONStringer;)V+]Lorg/json/JSONStringer;missing_types]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
 HSPLorg/json/JSONException;-><init>(Ljava/lang/String;)V
+HSPLorg/json/JSONObject$1;->toString()Ljava/lang/String;
 HSPLorg/json/JSONObject;-><init>()V
 HSPLorg/json/JSONObject;-><init>(Ljava/lang/String;)V
 HSPLorg/json/JSONObject;-><init>(Ljava/util/Map;)V+]Ljava/util/Map$Entry;megamorphic_types]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Ljava/util/Map;megamorphic_types]Ljava/util/Iterator;megamorphic_types]Ljava/util/Set;megamorphic_types
@@ -7904,6 +8426,7 @@
 HSPLorg/json/JSONObject;->checkName(Ljava/lang/String;)Ljava/lang/String;
 HSPLorg/json/JSONObject;->get(Ljava/lang/String;)Ljava/lang/Object;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLorg/json/JSONObject;->getBoolean(Ljava/lang/String;)Z+]Ljava/lang/Boolean;Ljava/lang/Boolean;]Lorg/json/JSONObject;Lorg/json/JSONObject;
+HSPLorg/json/JSONObject;->getDouble(Ljava/lang/String;)D+]Lorg/json/JSONObject;Lorg/json/JSONObject;]Ljava/lang/Double;Ljava/lang/Double;
 HSPLorg/json/JSONObject;->getInt(Ljava/lang/String;)I+]Ljava/lang/Integer;Ljava/lang/Integer;]Lorg/json/JSONObject;Lorg/json/JSONObject;
 HSPLorg/json/JSONObject;->getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;+]Lorg/json/JSONObject;missing_types
 HSPLorg/json/JSONObject;->getJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;+]Lorg/json/JSONObject;missing_types
@@ -7913,13 +8436,14 @@
 HSPLorg/json/JSONObject;->isNull(Ljava/lang/String;)Z+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
 HSPLorg/json/JSONObject;->keys()Ljava/util/Iterator;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedKeySet;
 HSPLorg/json/JSONObject;->length()I+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
-HSPLorg/json/JSONObject;->numberToString(Ljava/lang/Number;)Ljava/lang/String;+]Ljava/lang/Object;missing_types]Ljava/lang/Number;missing_types
+HSPLorg/json/JSONObject;->numberToString(Ljava/lang/Number;)Ljava/lang/String;+]Ljava/lang/Object;megamorphic_types]Ljava/lang/Number;megamorphic_types
 HSPLorg/json/JSONObject;->opt(Ljava/lang/String;)Ljava/lang/Object;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
 HSPLorg/json/JSONObject;->optBoolean(Ljava/lang/String;)Z+]Lorg/json/JSONObject;missing_types
 HSPLorg/json/JSONObject;->optBoolean(Ljava/lang/String;Z)Z+]Ljava/lang/Boolean;Ljava/lang/Boolean;]Lorg/json/JSONObject;missing_types
+HSPLorg/json/JSONObject;->optDouble(Ljava/lang/String;D)D+]Lorg/json/JSONObject;Lorg/json/JSONObject;]Ljava/lang/Double;Ljava/lang/Double;
 HSPLorg/json/JSONObject;->optInt(Ljava/lang/String;)I+]Lorg/json/JSONObject;Lorg/json/JSONObject;
 HSPLorg/json/JSONObject;->optInt(Ljava/lang/String;I)I+]Ljava/lang/Integer;Ljava/lang/Integer;]Lorg/json/JSONObject;Lorg/json/JSONObject;
-HSPLorg/json/JSONObject;->optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;+]Lorg/json/JSONObject;Lorg/json/JSONObject;
+HSPLorg/json/JSONObject;->optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;+]Lorg/json/JSONObject;missing_types
 HSPLorg/json/JSONObject;->optJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;+]Lorg/json/JSONObject;missing_types
 HSPLorg/json/JSONObject;->optLong(Ljava/lang/String;)J+]Lorg/json/JSONObject;Lorg/json/JSONObject;
 HSPLorg/json/JSONObject;->optLong(Ljava/lang/String;J)J+]Lorg/json/JSONObject;missing_types]Ljava/lang/Long;Ljava/lang/Long;
@@ -7928,13 +8452,16 @@
 HSPLorg/json/JSONObject;->put(Ljava/lang/String;D)Lorg/json/JSONObject;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Lorg/json/JSONObject;missing_types
 HSPLorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Lorg/json/JSONObject;missing_types
 HSPLorg/json/JSONObject;->put(Ljava/lang/String;J)Lorg/json/JSONObject;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Lorg/json/JSONObject;missing_types
-HSPLorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Ljava/lang/Number;missing_types]Lorg/json/JSONObject;missing_types
+HSPLorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Ljava/lang/Number;megamorphic_types]Lorg/json/JSONObject;missing_types
 HSPLorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Lorg/json/JSONObject;missing_types
-HSPLorg/json/JSONObject;->putOpt(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;+]Lorg/json/JSONObject;Lorg/json/JSONObject;
+HSPLorg/json/JSONObject;->putOpt(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;+]Lorg/json/JSONObject;missing_types
+HSPLorg/json/JSONObject;->remove(Ljava/lang/String;)Ljava/lang/Object;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
 HSPLorg/json/JSONObject;->toString()Ljava/lang/String;+]Lorg/json/JSONStringer;Lorg/json/JSONStringer;]Lorg/json/JSONObject;missing_types
+HSPLorg/json/JSONObject;->toString(I)Ljava/lang/String;+]Lorg/json/JSONStringer;Lorg/json/JSONStringer;]Lorg/json/JSONObject;Lorg/json/JSONObject;
 HSPLorg/json/JSONObject;->wrap(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Object;megamorphic_types]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Package;Ljava/lang/Package;]Ljava/lang/String;Ljava/lang/String;
 HSPLorg/json/JSONObject;->writeTo(Lorg/json/JSONStringer;)V+]Ljava/util/Map$Entry;Ljava/util/LinkedHashMap$LinkedHashMapEntry;]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Lorg/json/JSONStringer;missing_types]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedEntryIterator;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedEntrySet;
 HSPLorg/json/JSONStringer;-><init>()V
+HSPLorg/json/JSONStringer;-><init>(I)V
 HSPLorg/json/JSONStringer;->array()Lorg/json/JSONStringer;+]Lorg/json/JSONStringer;missing_types
 HSPLorg/json/JSONStringer;->beforeKey()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLorg/json/JSONStringer;->beforeValue()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/List;Ljava/util/ArrayList;
@@ -7975,7 +8502,7 @@
 HSPLorg/xmlpull/v1/XmlPullParserFactory;->getParserInstance()Lorg/xmlpull/v1/XmlPullParser;+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
 HSPLorg/xmlpull/v1/XmlPullParserFactory;->newInstance()Lorg/xmlpull/v1/XmlPullParserFactory;
 HSPLorg/xmlpull/v1/XmlPullParserFactory;->newPullParser()Lorg/xmlpull/v1/XmlPullParser;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Lorg/xmlpull/v1/XmlPullParser;Lcom/android/org/kxml2/io/KXmlParser;
-HSPLorg/xmlpull/v1/XmlPullParserFactory;->setNamespaceAware(Z)V
+HSPLorg/xmlpull/v1/XmlPullParserFactory;->setNamespaceAware(Z)V+]Ljava/util/HashMap;Ljava/util/HashMap;
 HSPLsun/invoke/util/Wrapper;->findPrimitiveType(Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
 HSPLsun/invoke/util/Wrapper;->forPrimitiveType(Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
 HSPLsun/invoke/util/Wrapper;->hashPrim(Ljava/lang/Class;)I
@@ -7996,7 +8523,7 @@
 HSPLsun/misc/Cleaner;->remove(Lsun/misc/Cleaner;)Z
 HSPLsun/misc/CompoundEnumeration;-><init>([Ljava/util/Enumeration;)V
 HSPLsun/misc/CompoundEnumeration;->hasMoreElements()Z
-HSPLsun/misc/CompoundEnumeration;->next()Z+]Ljava/util/Enumeration;Ljava/util/Collections$3;
+HSPLsun/misc/CompoundEnumeration;->next()Z+]Ljava/util/Enumeration;Lsun/misc/CompoundEnumeration;,Ljava/util/Collections$3;
 HSPLsun/misc/CompoundEnumeration;->nextElement()Ljava/lang/Object;
 HSPLsun/misc/FDBigInteger;-><init>(J[CII)V
 HSPLsun/misc/FDBigInteger;-><init>([II)V
@@ -8081,11 +8608,10 @@
 HSPLsun/misc/Unsafe;->getAndSetObject(Ljava/lang/Object;JLjava/lang/Object;)Ljava/lang/Object;
 HSPLsun/misc/Unsafe;->getUnsafe()Lsun/misc/Unsafe;+]Ljava/lang/Class;Ljava/lang/Class;
 HSPLsun/misc/Unsafe;->objectFieldOffset(Ljava/lang/reflect/Field;)J+]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field;
+HSPLsun/misc/VM;->isBooted()Z
 HSPLsun/net/NetHooks;->beforeTcpBind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
 HSPLsun/net/NetHooks;->beforeTcpConnect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
-HSPLsun/net/NetProperties;->get(Ljava/lang/String;)Ljava/lang/String;
-HSPLsun/net/ResourceManager;->afterUdpClose()V
-HSPLsun/net/ResourceManager;->beforeUdpCreate()V
+HSPLsun/net/NetProperties;->get(Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Properties;Ljava/util/Properties;
 HSPLsun/net/spi/DefaultProxySelector$1;-><init>(Lsun/net/spi/DefaultProxySelector;Ljava/lang/String;Lsun/net/spi/DefaultProxySelector$NonProxyInfo;Ljava/lang/String;)V
 HSPLsun/net/spi/DefaultProxySelector$1;->run()Ljava/lang/Object;+]Lsun/net/spi/DefaultProxySelector$1;Lsun/net/spi/DefaultProxySelector$1;
 HSPLsun/net/spi/DefaultProxySelector$1;->run()Ljava/net/Proxy;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
@@ -8096,6 +8622,18 @@
 HSPLsun/net/www/ParseUtil;->encodePath(Ljava/lang/String;Z)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/BitSet;Ljava/util/BitSet;
 HSPLsun/net/www/protocol/file/Handler;->parseURL(Ljava/net/URL;Ljava/lang/String;II)V+]Ljava/lang/String;Ljava/lang/String;
 HSPLsun/net/www/protocol/jar/Handler;-><init>()V
+HSPLsun/nio/ch/AbstractPollArrayWrapper;-><init>()V
+HSPLsun/nio/ch/AbstractPollArrayWrapper;->getReventOps(I)I+]Lsun/nio/ch/AllocatedNativeObject;Lsun/nio/ch/AllocatedNativeObject;
+HSPLsun/nio/ch/AbstractPollArrayWrapper;->putDescriptor(II)V+]Lsun/nio/ch/AllocatedNativeObject;Lsun/nio/ch/AllocatedNativeObject;
+HSPLsun/nio/ch/AbstractPollArrayWrapper;->putEventOps(II)V+]Lsun/nio/ch/AllocatedNativeObject;Lsun/nio/ch/AllocatedNativeObject;
+HSPLsun/nio/ch/AbstractPollArrayWrapper;->putReventOps(II)V+]Lsun/nio/ch/AllocatedNativeObject;Lsun/nio/ch/AllocatedNativeObject;
+HSPLsun/nio/ch/AbstractPollSelectorImpl;-><init>(Ljava/nio/channels/spi/SelectorProvider;II)V
+HSPLsun/nio/ch/AbstractPollSelectorImpl;->implClose()V+]Ljava/nio/channels/SelectableChannel;Lsun/nio/ch/DatagramChannelImpl;]Lsun/nio/ch/PollArrayWrapper;Lsun/nio/ch/PollArrayWrapper;]Lsun/nio/ch/AbstractPollSelectorImpl;Lsun/nio/ch/PollSelectorImpl;]Lsun/nio/ch/SelectionKeyImpl;Lsun/nio/ch/SelectionKeyImpl;
+HSPLsun/nio/ch/AbstractPollSelectorImpl;->implRegister(Lsun/nio/ch/SelectionKeyImpl;)V+]Lsun/nio/ch/PollArrayWrapper;Lsun/nio/ch/PollArrayWrapper;]Lsun/nio/ch/SelectionKeyImpl;Lsun/nio/ch/SelectionKeyImpl;]Ljava/util/HashSet;Ljava/util/HashSet;
+HSPLsun/nio/ch/AbstractPollSelectorImpl;->putEventOps(Lsun/nio/ch/SelectionKeyImpl;I)V+]Lsun/nio/ch/PollArrayWrapper;Lsun/nio/ch/PollArrayWrapper;]Lsun/nio/ch/SelectionKeyImpl;Lsun/nio/ch/SelectionKeyImpl;
+HSPLsun/nio/ch/AbstractPollSelectorImpl;->updateSelectedKeys()I+]Lsun/nio/ch/SelChImpl;Lsun/nio/ch/DatagramChannelImpl;,Lsun/nio/ch/SocketChannelImpl;,Lsun/nio/ch/SourceChannelImpl;]Lsun/nio/ch/PollArrayWrapper;Lsun/nio/ch/PollArrayWrapper;]Lsun/nio/ch/SelectionKeyImpl;Lsun/nio/ch/SelectionKeyImpl;]Ljava/util/Set;Ljava/util/HashSet;
+HSPLsun/nio/ch/AllocatedNativeObject;-><init>(IZ)V
+HSPLsun/nio/ch/AllocatedNativeObject;->free()V+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
 HSPLsun/nio/ch/ChannelInputStream;-><init>(Ljava/nio/channels/ReadableByteChannel;)V
 HSPLsun/nio/ch/ChannelInputStream;->available()I+]Ljava/nio/channels/SeekableByteChannel;Lsun/nio/ch/FileChannelImpl;
 HSPLsun/nio/ch/ChannelInputStream;->close()V+]Ljava/nio/channels/ReadableByteChannel;Lsun/nio/ch/FileChannelImpl;
@@ -8103,38 +8641,38 @@
 HSPLsun/nio/ch/ChannelInputStream;->read(Ljava/nio/ByteBuffer;)I
 HSPLsun/nio/ch/ChannelInputStream;->read(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/ByteBuffer;Z)I+]Ljava/nio/channels/ReadableByteChannel;Lsun/nio/ch/FileChannelImpl;
 HSPLsun/nio/ch/ChannelInputStream;->read([BII)I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Lsun/nio/ch/ChannelInputStream;Lsun/nio/ch/ChannelInputStream;,Lsun/nio/ch/SocketAdaptor$SocketInputStream;
+HSPLsun/nio/ch/DefaultSelectorProvider;->create()Ljava/nio/channels/spi/SelectorProvider;
 HSPLsun/nio/ch/FileChannelImpl$Unmapper;-><init>(JJILjava/io/FileDescriptor;)V
 HSPLsun/nio/ch/FileChannelImpl$Unmapper;-><init>(JJILjava/io/FileDescriptor;Lsun/nio/ch/FileChannelImpl$1;)V
 HSPLsun/nio/ch/FileChannelImpl$Unmapper;->run()V+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;
-HSPLsun/nio/ch/FileChannelImpl;-><init>(Ljava/io/FileDescriptor;Ljava/lang/String;ZZZLjava/lang/Object;)V+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLsun/nio/ch/FileChannelImpl;-><init>(Ljava/io/FileDescriptor;Ljava/lang/String;ZZZLjava/lang/Object;)V+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;]Ldalvik/system/CloseGuard;missing_types
 HSPLsun/nio/ch/FileChannelImpl;->access$000(JJ)I
 HSPLsun/nio/ch/FileChannelImpl;->ensureOpen()V+]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;
 HSPLsun/nio/ch/FileChannelImpl;->fileLockTable()Lsun/nio/ch/FileLockTable;+]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;
-HSPLsun/nio/ch/FileChannelImpl;->finalize()V+]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
-HSPLsun/nio/ch/FileChannelImpl;->force(Z)V+]Lsun/nio/ch/FileDispatcher;Lsun/nio/ch/FileDispatcherImpl;]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;
-HSPLsun/nio/ch/FileChannelImpl;->implCloseChannel()V+]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Ljava/io/Closeable;missing_types]Ljava/util/List;Ljava/util/ArrayList;]Lsun/nio/ch/FileLockTable;Lsun/nio/ch/SharedFileLockTable;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;]Lsun/nio/ch/FileDispatcher;Lsun/nio/ch/FileDispatcherImpl;]Lsun/nio/ch/FileLockImpl;Lsun/nio/ch/FileLockImpl;]Ljava/nio/channels/FileLock;Lsun/nio/ch/FileLockImpl;
+HSPLsun/nio/ch/FileChannelImpl;->finalize()V+]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;]Ldalvik/system/CloseGuard;missing_types
+HSPLsun/nio/ch/FileChannelImpl;->force(Z)V+]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileDispatcher;Lsun/nio/ch/FileDispatcherImpl;]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;
+HSPLsun/nio/ch/FileChannelImpl;->implCloseChannel()V+]Lsun/nio/ch/FileDispatcher;Lsun/nio/ch/FileDispatcherImpl;]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Ldalvik/system/CloseGuard;missing_types]Lsun/nio/ch/FileLockImpl;Lsun/nio/ch/FileLockImpl;]Ljava/nio/channels/FileLock;Lsun/nio/ch/FileLockImpl;]Ljava/io/Closeable;missing_types]Ljava/util/List;Ljava/util/ArrayList;]Lsun/nio/ch/FileLockTable;Lsun/nio/ch/SharedFileLockTable;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
 HSPLsun/nio/ch/FileChannelImpl;->isSharedFileLockTable()Z
 HSPLsun/nio/ch/FileChannelImpl;->lock(JJZ)Ljava/nio/channels/FileLock;+]Lsun/nio/ch/FileDispatcher;Lsun/nio/ch/FileDispatcherImpl;]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileLockTable;Lsun/nio/ch/SharedFileLockTable;]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;
 HSPLsun/nio/ch/FileChannelImpl;->map(Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer;+]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileDispatcher;Lsun/nio/ch/FileDispatcherImpl;]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;]Ldalvik/system/BlockGuard$Policy;missing_types
 HSPLsun/nio/ch/FileChannelImpl;->open(Ljava/io/FileDescriptor;Ljava/lang/String;ZZLjava/lang/Object;)Ljava/nio/channels/FileChannel;
 HSPLsun/nio/ch/FileChannelImpl;->open(Ljava/io/FileDescriptor;Ljava/lang/String;ZZZLjava/lang/Object;)Ljava/nio/channels/FileChannel;
 HSPLsun/nio/ch/FileChannelImpl;->position()J+]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;
-HSPLsun/nio/ch/FileChannelImpl;->position(J)Ljava/nio/channels/FileChannel;+]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
+HSPLsun/nio/ch/FileChannelImpl;->position(J)Ljava/nio/channels/FileChannel;+]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;]Ldalvik/system/BlockGuard$Policy;missing_types
 HSPLsun/nio/ch/FileChannelImpl;->read(Ljava/nio/ByteBuffer;)I+]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;
 HSPLsun/nio/ch/FileChannelImpl;->release(Lsun/nio/ch/FileLockImpl;)V+]Lsun/nio/ch/FileDispatcher;Lsun/nio/ch/FileDispatcherImpl;]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileLockImpl;Lsun/nio/ch/FileLockImpl;]Lsun/nio/ch/FileLockTable;Lsun/nio/ch/SharedFileLockTable;
-HSPLsun/nio/ch/FileChannelImpl;->size()J+]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileDispatcher;Lsun/nio/ch/FileDispatcherImpl;]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;
-HSPLsun/nio/ch/FileChannelImpl;->tryLock(JJZ)Ljava/nio/channels/FileLock;
+HSPLsun/nio/ch/FileChannelImpl;->size()J+]Lsun/nio/ch/FileDispatcher;Lsun/nio/ch/FileDispatcherImpl;]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;
+HSPLsun/nio/ch/FileChannelImpl;->tryLock(JJZ)Ljava/nio/channels/FileLock;+]Lsun/nio/ch/FileDispatcher;Lsun/nio/ch/FileDispatcherImpl;]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileLockTable;Lsun/nio/ch/SharedFileLockTable;
 HSPLsun/nio/ch/FileChannelImpl;->write(Ljava/nio/ByteBuffer;)I+]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;
-HSPLsun/nio/ch/FileChannelImpl;->write(Ljava/nio/ByteBuffer;J)I+]Lsun/nio/ch/FileDispatcher;Lsun/nio/ch/FileDispatcherImpl;
-HSPLsun/nio/ch/FileChannelImpl;->writeInternal(Ljava/nio/ByteBuffer;J)I+]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;
+HSPLsun/nio/ch/FileDescriptorHolderSocketImpl;-><init>(Ljava/io/FileDescriptor;)V
 HSPLsun/nio/ch/FileDispatcher;-><init>()V
 HSPLsun/nio/ch/FileDispatcherImpl;-><init>(Z)V
 HSPLsun/nio/ch/FileDispatcherImpl;->close(Ljava/io/FileDescriptor;)V
 HSPLsun/nio/ch/FileDispatcherImpl;->duplicateForMapping(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor;
-HSPLsun/nio/ch/FileDispatcherImpl;->force(Ljava/io/FileDescriptor;Z)I+]Ldalvik/system/BlockGuard$Policy;Landroid/os/StrictMode$AndroidBlockGuardPolicy;,Ldalvik/system/BlockGuard$1;
-HSPLsun/nio/ch/FileDispatcherImpl;->lock(Ljava/io/FileDescriptor;ZJJZ)I+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
+HSPLsun/nio/ch/FileDispatcherImpl;->force(Ljava/io/FileDescriptor;Z)I+]Ldalvik/system/BlockGuard$Policy;missing_types
+HSPLsun/nio/ch/FileDispatcherImpl;->lock(Ljava/io/FileDescriptor;ZJJZ)I+]Ldalvik/system/BlockGuard$Policy;missing_types
 HSPLsun/nio/ch/FileDispatcherImpl;->read(Ljava/io/FileDescriptor;JI)I+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
-HSPLsun/nio/ch/FileDispatcherImpl;->release(Ljava/io/FileDescriptor;JJ)V+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
+HSPLsun/nio/ch/FileDispatcherImpl;->release(Ljava/io/FileDescriptor;JJ)V+]Ldalvik/system/BlockGuard$Policy;missing_types
 HSPLsun/nio/ch/FileDispatcherImpl;->size(Ljava/io/FileDescriptor;)J+]Ldalvik/system/BlockGuard$Policy;missing_types
 HSPLsun/nio/ch/FileDispatcherImpl;->truncate(Ljava/io/FileDescriptor;J)I
 HSPLsun/nio/ch/FileDispatcherImpl;->write(Ljava/io/FileDescriptor;JI)I+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;
@@ -8150,25 +8688,90 @@
 HSPLsun/nio/ch/IOStatus;->checkAll(J)Z
 HSPLsun/nio/ch/IOStatus;->normalize(I)I
 HSPLsun/nio/ch/IOStatus;->normalize(J)J
+HSPLsun/nio/ch/IOUtil;->newFD(I)Ljava/io/FileDescriptor;
 HSPLsun/nio/ch/IOUtil;->read(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;
 HSPLsun/nio/ch/IOUtil;->readIntoNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I+]Lsun/nio/ch/NativeDispatcher;Lsun/nio/ch/FileDispatcherImpl;]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;]Lsun/nio/ch/DirectBuffer;Ljava/nio/DirectByteBuffer;
 HSPLsun/nio/ch/IOUtil;->write(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/DirectByteBuffer;
 HSPLsun/nio/ch/IOUtil;->writeFromNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I+]Lsun/nio/ch/NativeDispatcher;Lsun/nio/ch/FileDispatcherImpl;]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;]Lsun/nio/ch/DirectBuffer;Ljava/nio/DirectByteBuffer;
 HSPLsun/nio/ch/NativeDispatcher;-><init>()V
 HSPLsun/nio/ch/NativeDispatcher;->needsPositionLock()Z
+HSPLsun/nio/ch/NativeObject;-><init>(IZ)V+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
+HSPLsun/nio/ch/NativeObject;->address()J
+HSPLsun/nio/ch/NativeObject;->getShort(I)S+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
+HSPLsun/nio/ch/NativeObject;->putInt(II)V+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
+HSPLsun/nio/ch/NativeObject;->putShort(IS)V+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
 HSPLsun/nio/ch/NativeThreadSet;-><init>(I)V
 HSPLsun/nio/ch/NativeThreadSet;->add()I
 HSPLsun/nio/ch/NativeThreadSet;->remove(I)V+]Ljava/lang/Object;Lsun/nio/ch/NativeThreadSet;
 HSPLsun/nio/ch/NativeThreadSet;->signalAndWait()V
+HSPLsun/nio/ch/Net;->checkAddress(Ljava/net/SocketAddress;)Ljava/net/InetSocketAddress;
+HSPLsun/nio/ch/Net;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)I
+HSPLsun/nio/ch/Net;->connect(Ljava/net/ProtocolFamily;Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)I
+HSPLsun/nio/ch/Net;->isIPv6Available()Z
+HSPLsun/nio/ch/Net;->localAddress(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
+HSPLsun/nio/ch/Net;->socket(Ljava/net/ProtocolFamily;Z)Ljava/io/FileDescriptor;
+HSPLsun/nio/ch/Net;->socket(Z)Ljava/io/FileDescriptor;
+HSPLsun/nio/ch/PollArrayWrapper;-><init>(I)V+]Lsun/nio/ch/AllocatedNativeObject;Lsun/nio/ch/AllocatedNativeObject;
+HSPLsun/nio/ch/PollArrayWrapper;->addEntry(Lsun/nio/ch/SelChImpl;)V+]Lsun/nio/ch/SelChImpl;Lsun/nio/ch/DatagramChannelImpl;,Lsun/nio/ch/SocketChannelImpl;]Lsun/nio/ch/PollArrayWrapper;Lsun/nio/ch/PollArrayWrapper;
+HSPLsun/nio/ch/PollArrayWrapper;->free()V+]Lsun/nio/ch/AllocatedNativeObject;Lsun/nio/ch/AllocatedNativeObject;
+HSPLsun/nio/ch/PollArrayWrapper;->initInterrupt(II)V+]Lsun/nio/ch/PollArrayWrapper;Lsun/nio/ch/PollArrayWrapper;
+HSPLsun/nio/ch/PollArrayWrapper;->interrupt()V
+HSPLsun/nio/ch/PollArrayWrapper;->poll(IIJ)I
+HSPLsun/nio/ch/PollArrayWrapper;->release(I)V
+HSPLsun/nio/ch/PollSelectorImpl;-><init>(Ljava/nio/channels/spi/SelectorProvider;)V+]Lsun/nio/ch/PollArrayWrapper;Lsun/nio/ch/PollArrayWrapper;
+HSPLsun/nio/ch/PollSelectorImpl;->doSelect(J)I+]Lsun/nio/ch/PollArrayWrapper;Lsun/nio/ch/PollArrayWrapper;]Lsun/nio/ch/PollSelectorImpl;Lsun/nio/ch/PollSelectorImpl;
+HSPLsun/nio/ch/PollSelectorImpl;->implCloseInterrupt()V+]Lsun/nio/ch/PollArrayWrapper;Lsun/nio/ch/PollArrayWrapper;
+HSPLsun/nio/ch/PollSelectorImpl;->wakeup()Ljava/nio/channels/Selector;+]Lsun/nio/ch/PollArrayWrapper;Lsun/nio/ch/PollArrayWrapper;
+HSPLsun/nio/ch/PollSelectorProvider;-><init>()V
+HSPLsun/nio/ch/PollSelectorProvider;->openSelector()Ljava/nio/channels/spi/AbstractSelector;
+HSPLsun/nio/ch/SelectionKeyImpl;-><init>(Lsun/nio/ch/SelChImpl;Lsun/nio/ch/SelectorImpl;)V
+HSPLsun/nio/ch/SelectionKeyImpl;->channel()Ljava/nio/channels/SelectableChannel;
+HSPLsun/nio/ch/SelectionKeyImpl;->ensureValid()V+]Lsun/nio/ch/SelectionKeyImpl;Lsun/nio/ch/SelectionKeyImpl;
+HSPLsun/nio/ch/SelectionKeyImpl;->getIndex()I
+HSPLsun/nio/ch/SelectionKeyImpl;->interestOps(I)Ljava/nio/channels/SelectionKey;+]Lsun/nio/ch/SelectionKeyImpl;Lsun/nio/ch/SelectionKeyImpl;
+HSPLsun/nio/ch/SelectionKeyImpl;->nioInterestOps()I
+HSPLsun/nio/ch/SelectionKeyImpl;->nioInterestOps(I)Ljava/nio/channels/SelectionKey;+]Lsun/nio/ch/SelChImpl;Lsun/nio/ch/DatagramChannelImpl;,Lsun/nio/ch/SocketChannelImpl;,Lsun/nio/ch/ServerSocketChannelImpl;]Ljava/nio/channels/SelectableChannel;Lsun/nio/ch/DatagramChannelImpl;,Lsun/nio/ch/SocketChannelImpl;,Lsun/nio/ch/ServerSocketChannelImpl;]Lsun/nio/ch/SelectionKeyImpl;Lsun/nio/ch/SelectionKeyImpl;
+HSPLsun/nio/ch/SelectionKeyImpl;->nioReadyOps()I
+HSPLsun/nio/ch/SelectionKeyImpl;->nioReadyOps(I)V
+HSPLsun/nio/ch/SelectionKeyImpl;->setIndex(I)V
+HSPLsun/nio/ch/SelectorImpl;-><init>(Ljava/nio/channels/spi/SelectorProvider;)V
+HSPLsun/nio/ch/SelectorImpl;->implCloseSelector()V+]Lsun/nio/ch/SelectorImpl;Lsun/nio/ch/PollSelectorImpl;
+HSPLsun/nio/ch/SelectorImpl;->lockAndDoSelect(J)I+]Lsun/nio/ch/SelectorImpl;Lsun/nio/ch/PollSelectorImpl;
+HSPLsun/nio/ch/SelectorImpl;->processDeregisterQueue()V+]Lsun/nio/ch/SelectorImpl;Lsun/nio/ch/PollSelectorImpl;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Set;Ljava/util/HashSet;
+HSPLsun/nio/ch/SelectorImpl;->register(Ljava/nio/channels/spi/AbstractSelectableChannel;ILjava/lang/Object;)Ljava/nio/channels/SelectionKey;+]Lsun/nio/ch/SelectionKeyImpl;Lsun/nio/ch/SelectionKeyImpl;]Lsun/nio/ch/SelectorImpl;Lsun/nio/ch/PollSelectorImpl;
+HSPLsun/nio/ch/SelectorImpl;->select(J)I
+HSPLsun/nio/ch/SelectorProviderImpl;-><init>()V
+HSPLsun/nio/ch/SelectorProviderImpl;->openSocketChannel()Ljava/nio/channels/SocketChannel;
 HSPLsun/nio/ch/SharedFileLockTable$FileLockReference;-><init>(Ljava/nio/channels/FileLock;Ljava/lang/ref/ReferenceQueue;Lsun/nio/ch/FileKey;)V
+HSPLsun/nio/ch/SharedFileLockTable$FileLockReference;->fileKey()Lsun/nio/ch/FileKey;
 HSPLsun/nio/ch/SharedFileLockTable;-><init>(Ljava/nio/channels/Channel;Ljava/io/FileDescriptor;)V
 HSPLsun/nio/ch/SharedFileLockTable;->add(Ljava/nio/channels/FileLock;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Ljava/nio/channels/FileLock;Lsun/nio/ch/FileLockImpl;
 HSPLsun/nio/ch/SharedFileLockTable;->remove(Ljava/nio/channels/FileLock;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Lsun/nio/ch/SharedFileLockTable$FileLockReference;Lsun/nio/ch/SharedFileLockTable$FileLockReference;
-HSPLsun/nio/ch/SharedFileLockTable;->removeAll()Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Ljava/nio/channels/FileLock;Lsun/nio/ch/FileLockImpl;]Lsun/nio/ch/SharedFileLockTable$FileLockReference;Lsun/nio/ch/SharedFileLockTable$FileLockReference;
+HSPLsun/nio/ch/SharedFileLockTable;->removeAll()Ljava/util/List;+]Ljava/nio/channels/FileLock;Lsun/nio/ch/FileLockImpl;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Lsun/nio/ch/SharedFileLockTable$FileLockReference;Lsun/nio/ch/SharedFileLockTable$FileLockReference;
 HSPLsun/nio/ch/SharedFileLockTable;->removeKeyIfEmpty(Lsun/nio/ch/FileKey;Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
 HSPLsun/nio/ch/SharedFileLockTable;->removeStaleEntries()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;]Lsun/nio/ch/SharedFileLockTable$FileLockReference;Lsun/nio/ch/SharedFileLockTable$FileLockReference;
+HSPLsun/nio/ch/SocketAdaptor;-><init>(Lsun/nio/ch/SocketChannelImpl;)V+]Lsun/nio/ch/SocketChannelImpl;Lsun/nio/ch/SocketChannelImpl;
+HSPLsun/nio/ch/SocketAdaptor;->create(Lsun/nio/ch/SocketChannelImpl;)Ljava/net/Socket;
+HSPLsun/nio/ch/SocketAdaptor;->isClosed()Z+]Lsun/nio/ch/SocketChannelImpl;Lsun/nio/ch/SocketChannelImpl;
+HSPLsun/nio/ch/SocketChannelImpl;-><init>(Ljava/nio/channels/spi/SelectorProvider;)V+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLsun/nio/ch/SocketChannelImpl;->connect(Ljava/net/SocketAddress;)Z+]Lsun/nio/ch/SocketChannelImpl;Lsun/nio/ch/SocketChannelImpl;]Ljava/net/InetAddress;Ljava/net/Inet4Address;,Ljava/net/Inet6Address;]Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;
+HSPLsun/nio/ch/SocketChannelImpl;->ensureOpenAndUnconnected()V+]Lsun/nio/ch/SocketChannelImpl;Lsun/nio/ch/SocketChannelImpl;
+HSPLsun/nio/ch/SocketChannelImpl;->finishConnect()Z+]Lsun/nio/ch/SocketChannelImpl;Lsun/nio/ch/SocketChannelImpl;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;
+HSPLsun/nio/ch/SocketChannelImpl;->getFD()Ljava/io/FileDescriptor;
+HSPLsun/nio/ch/SocketChannelImpl;->implCloseSelectableChannel()V+]Lsun/nio/ch/NativeDispatcher;Lsun/nio/ch/SocketDispatcher;]Lsun/nio/ch/SocketChannelImpl;Lsun/nio/ch/SocketChannelImpl;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
+HSPLsun/nio/ch/SocketChannelImpl;->implConfigureBlocking(Z)V
+HSPLsun/nio/ch/SocketChannelImpl;->isConnected()Z
+HSPLsun/nio/ch/SocketChannelImpl;->kill()V+]Lsun/nio/ch/NativeDispatcher;Lsun/nio/ch/SocketDispatcher;
+HSPLsun/nio/ch/SocketChannelImpl;->readerCleanup()V+]Lsun/nio/ch/SocketChannelImpl;Lsun/nio/ch/SocketChannelImpl;
+HSPLsun/nio/ch/SocketChannelImpl;->socket()Ljava/net/Socket;
+HSPLsun/nio/ch/SocketChannelImpl;->translateAndSetInterestOps(ILsun/nio/ch/SelectionKeyImpl;)V+]Lsun/nio/ch/SelectorImpl;Lsun/nio/ch/PollSelectorImpl;
+HSPLsun/nio/ch/SocketChannelImpl;->translateAndSetReadyOps(ILsun/nio/ch/SelectionKeyImpl;)Z+]Lsun/nio/ch/SocketChannelImpl;Lsun/nio/ch/SocketChannelImpl;
+HSPLsun/nio/ch/SocketChannelImpl;->translateReadyOps(IILsun/nio/ch/SelectionKeyImpl;)Z+]Lsun/nio/ch/SelectionKeyImpl;Lsun/nio/ch/SelectionKeyImpl;
+HSPLsun/nio/ch/SocketDispatcher;->close(Ljava/io/FileDescriptor;)V
+HSPLsun/nio/ch/SocketDispatcher;->preClose(Ljava/io/FileDescriptor;)V
 HSPLsun/nio/ch/Util$1;->initialValue()Ljava/lang/Object;+]Lsun/nio/ch/Util$1;Lsun/nio/ch/Util$1;
 HSPLsun/nio/ch/Util$1;->initialValue()Lsun/nio/ch/Util$BufferCache;
+HSPLsun/nio/ch/Util$3;-><init>(Ljava/util/Set;)V
 HSPLsun/nio/ch/Util$BufferCache;-><init>()V
 HSPLsun/nio/ch/Util$BufferCache;->get(I)Ljava/nio/ByteBuffer;+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;
 HSPLsun/nio/ch/Util$BufferCache;->isEmpty()Z
@@ -8176,16 +8779,18 @@
 HSPLsun/nio/ch/Util$BufferCache;->offerFirst(Ljava/nio/ByteBuffer;)Z
 HSPLsun/nio/ch/Util$BufferCache;->removeFirst()Ljava/nio/ByteBuffer;
 HSPLsun/nio/ch/Util;->access$000()I
+HSPLsun/nio/ch/Util;->atBugLevel(Ljava/lang/String;)Z
 HSPLsun/nio/ch/Util;->free(Ljava/nio/ByteBuffer;)V
 HSPLsun/nio/ch/Util;->getTemporaryDirectBuffer(I)Ljava/nio/ByteBuffer;+]Ljava/lang/ThreadLocal;Lsun/nio/ch/Util$1;]Lsun/nio/ch/Util$BufferCache;Lsun/nio/ch/Util$BufferCache;
 HSPLsun/nio/ch/Util;->isBufferTooLarge(I)Z
 HSPLsun/nio/ch/Util;->isBufferTooLarge(Ljava/nio/ByteBuffer;)Z+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;
 HSPLsun/nio/ch/Util;->offerFirstTemporaryDirectBuffer(Ljava/nio/ByteBuffer;)V+]Ljava/lang/ThreadLocal;Lsun/nio/ch/Util$1;]Lsun/nio/ch/Util$BufferCache;Lsun/nio/ch/Util$BufferCache;
-HSPLsun/nio/cs/StreamDecoder;-><init>(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)V+]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
-HSPLsun/nio/cs/StreamDecoder;-><init>(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetDecoder;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
+HSPLsun/nio/ch/Util;->ungrowableSet(Ljava/util/Set;)Ljava/util/Set;
+HSPLsun/nio/cs/StreamDecoder;-><init>(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)V+]Ljava/nio/charset/Charset;missing_types]Ljava/nio/charset/CharsetDecoder;missing_types
+HSPLsun/nio/cs/StreamDecoder;-><init>(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetDecoder;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetDecoder;missing_types
 HSPLsun/nio/cs/StreamDecoder;->close()V+]Lsun/nio/cs/StreamDecoder;Lsun/nio/cs/StreamDecoder;
 HSPLsun/nio/cs/StreamDecoder;->ensureOpen()V
-HSPLsun/nio/cs/StreamDecoder;->forInputStreamReader(Ljava/io/InputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamDecoder;+]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;
+HSPLsun/nio/cs/StreamDecoder;->forInputStreamReader(Ljava/io/InputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamDecoder;+]Ljava/nio/charset/Charset;missing_types
 HSPLsun/nio/cs/StreamDecoder;->forInputStreamReader(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)Lsun/nio/cs/StreamDecoder;
 HSPLsun/nio/cs/StreamDecoder;->forInputStreamReader(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetDecoder;)Lsun/nio/cs/StreamDecoder;
 HSPLsun/nio/cs/StreamDecoder;->implClose()V+]Ljava/io/InputStream;megamorphic_types
@@ -8195,17 +8800,17 @@
 HSPLsun/nio/cs/StreamDecoder;->read()I
 HSPLsun/nio/cs/StreamDecoder;->read([CII)I+]Lsun/nio/cs/StreamDecoder;Lsun/nio/cs/StreamDecoder;
 HSPLsun/nio/cs/StreamDecoder;->read0()I+]Lsun/nio/cs/StreamDecoder;Lsun/nio/cs/StreamDecoder;
-HSPLsun/nio/cs/StreamDecoder;->readBytes()I+]Ljava/io/InputStream;megamorphic_types]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;
+HSPLsun/nio/cs/StreamDecoder;->readBytes()I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/io/InputStream;megamorphic_types
 HSPLsun/nio/cs/StreamDecoder;->ready()Z+]Lsun/nio/cs/StreamDecoder;Lsun/nio/cs/StreamDecoder;
-HSPLsun/nio/cs/StreamEncoder;-><init>(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)V+]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;
-HSPLsun/nio/cs/StreamEncoder;-><init>(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetEncoder;)V+]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;
+HSPLsun/nio/cs/StreamEncoder;-><init>(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)V+]Ljava/nio/charset/Charset;missing_types]Ljava/nio/charset/CharsetEncoder;missing_types
+HSPLsun/nio/cs/StreamEncoder;-><init>(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetEncoder;)V+]Ljava/nio/charset/CharsetEncoder;missing_types
 HSPLsun/nio/cs/StreamEncoder;->close()V+]Lsun/nio/cs/StreamEncoder;Lsun/nio/cs/StreamEncoder;
 HSPLsun/nio/cs/StreamEncoder;->ensureOpen()V
 HSPLsun/nio/cs/StreamEncoder;->flush()V+]Lsun/nio/cs/StreamEncoder;Lsun/nio/cs/StreamEncoder;
-HSPLsun/nio/cs/StreamEncoder;->flushLeftoverChar(Ljava/nio/CharBuffer;Z)V+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;
-HSPLsun/nio/cs/StreamEncoder;->forOutputStreamWriter(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamEncoder;+]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;
+HSPLsun/nio/cs/StreamEncoder;->flushLeftoverChar(Ljava/nio/CharBuffer;Z)V+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CharsetEncoder;missing_types]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;
+HSPLsun/nio/cs/StreamEncoder;->forOutputStreamWriter(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamEncoder;+]Ljava/nio/charset/Charset;missing_types
 HSPLsun/nio/cs/StreamEncoder;->forOutputStreamWriter(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)Lsun/nio/cs/StreamEncoder;
-HSPLsun/nio/cs/StreamEncoder;->implClose()V+]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/io/OutputStream;missing_types]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;
+HSPLsun/nio/cs/StreamEncoder;->implClose()V+]Ljava/nio/charset/CharsetEncoder;missing_types]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/io/OutputStream;missing_types]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;
 HSPLsun/nio/cs/StreamEncoder;->implFlush()V+]Lsun/nio/cs/StreamEncoder;Lsun/nio/cs/StreamEncoder;]Ljava/io/OutputStream;missing_types
 HSPLsun/nio/cs/StreamEncoder;->implFlushBuffer()V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;
 HSPLsun/nio/cs/StreamEncoder;->implWrite([CII)V+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CharsetEncoder;missing_types]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;
@@ -8214,10 +8819,13 @@
 HSPLsun/nio/cs/StreamEncoder;->write([CII)V+]Lsun/nio/cs/StreamEncoder;Lsun/nio/cs/StreamEncoder;
 HSPLsun/nio/cs/StreamEncoder;->writeBytes()V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/io/OutputStream;missing_types
 HSPLsun/nio/cs/ThreadLocalCoders$1;->create(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLsun/nio/cs/ThreadLocalCoders$1;->hasName(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
+HSPLsun/nio/cs/ThreadLocalCoders$1;->hasName(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/nio/charset/Charset;missing_types]Ljava/nio/charset/CharsetDecoder;missing_types
+HSPLsun/nio/cs/ThreadLocalCoders$2;->create(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLsun/nio/cs/ThreadLocalCoders$2;->hasName(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/nio/charset/Charset;missing_types]Ljava/nio/charset/CharsetEncoder;missing_types
 HSPLsun/nio/cs/ThreadLocalCoders$Cache;->forName(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal;]Lsun/nio/cs/ThreadLocalCoders$Cache;Lsun/nio/cs/ThreadLocalCoders$2;,Lsun/nio/cs/ThreadLocalCoders$1;
 HSPLsun/nio/cs/ThreadLocalCoders$Cache;->moveToFront([Ljava/lang/Object;I)V
-HSPLsun/nio/cs/ThreadLocalCoders;->decoderFor(Ljava/lang/Object;)Ljava/nio/charset/CharsetDecoder;+]Lsun/nio/cs/ThreadLocalCoders$Cache;Lsun/nio/cs/ThreadLocalCoders$1;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;
+HSPLsun/nio/cs/ThreadLocalCoders;->decoderFor(Ljava/lang/Object;)Ljava/nio/charset/CharsetDecoder;+]Lsun/nio/cs/ThreadLocalCoders$Cache;Lsun/nio/cs/ThreadLocalCoders$1;]Ljava/nio/charset/CharsetDecoder;missing_types
+HSPLsun/nio/cs/ThreadLocalCoders;->encoderFor(Ljava/lang/Object;)Ljava/nio/charset/CharsetEncoder;+]Ljava/nio/charset/CharsetEncoder;missing_types]Lsun/nio/cs/ThreadLocalCoders$Cache;Lsun/nio/cs/ThreadLocalCoders$2;
 HSPLsun/nio/fs/AbstractBasicFileAttributeView;-><init>()V
 HSPLsun/nio/fs/AbstractPath;-><init>()V
 HSPLsun/nio/fs/AbstractPath;->resolve(Ljava/lang/String;)Ljava/nio/file/Path;+]Ljava/nio/file/FileSystem;Lsun/nio/fs/LinuxFileSystem;]Lsun/nio/fs/AbstractPath;Lsun/nio/fs/UnixPath;
@@ -8235,11 +8843,11 @@
 HSPLsun/nio/fs/NativeBuffer;->size()I
 HSPLsun/nio/fs/NativeBuffers;->allocNativeBuffer(I)Lsun/nio/fs/NativeBuffer;
 HSPLsun/nio/fs/NativeBuffers;->copyCStringToNativeBuffer([BLsun/nio/fs/NativeBuffer;)V+]Lsun/nio/fs/NativeBuffer;Lsun/nio/fs/NativeBuffer;]Lsun/misc/Unsafe;Lsun/misc/Unsafe;
-HSPLsun/nio/fs/NativeBuffers;->getNativeBufferFromCache(I)Lsun/nio/fs/NativeBuffer;
+HSPLsun/nio/fs/NativeBuffers;->getNativeBufferFromCache(I)Lsun/nio/fs/NativeBuffer;+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal;]Lsun/nio/fs/NativeBuffer;Lsun/nio/fs/NativeBuffer;
 HSPLsun/nio/fs/NativeBuffers;->releaseNativeBuffer(Lsun/nio/fs/NativeBuffer;)V+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal;
 HSPLsun/nio/fs/UnixChannelFactory$1;-><clinit>()V
 HSPLsun/nio/fs/UnixChannelFactory$Flags;-><init>()V
-HSPLsun/nio/fs/UnixChannelFactory$Flags;->toFlags(Ljava/util/Set;)Lsun/nio/fs/UnixChannelFactory$Flags;+]Ljava/nio/file/StandardOpenOption;Ljava/nio/file/StandardOpenOption;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Set;Ljava/util/HashSet;
+HSPLsun/nio/fs/UnixChannelFactory$Flags;->toFlags(Ljava/util/Set;)Lsun/nio/fs/UnixChannelFactory$Flags;+]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Set;Ljava/util/HashSet;]Ljava/nio/file/StandardOpenOption;Ljava/nio/file/StandardOpenOption;
 HSPLsun/nio/fs/UnixChannelFactory;->newFileChannel(ILsun/nio/fs/UnixPath;Ljava/lang/String;Ljava/util/Set;I)Ljava/nio/channels/FileChannel;+]Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixPath;
 HSPLsun/nio/fs/UnixChannelFactory;->newFileChannel(Lsun/nio/fs/UnixPath;Ljava/util/Set;I)Ljava/nio/channels/FileChannel;
 HSPLsun/nio/fs/UnixChannelFactory;->open(ILsun/nio/fs/UnixPath;Ljava/lang/String;Lsun/nio/fs/UnixChannelFactory$Flags;I)Ljava/io/FileDescriptor;+]Lsun/misc/JavaIOFileDescriptorAccess;Ljava/io/FileDescriptor$1;
@@ -8247,13 +8855,9 @@
 HSPLsun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator;-><init>(Lsun/nio/fs/UnixDirectoryStream;Ljava/nio/file/DirectoryStream;)V
 HSPLsun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator;->hasNext()Z
 HSPLsun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator;->isSelfOrParent([B)Z
-HSPLsun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator;->next()Ljava/lang/Object;+]Lsun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator;Lsun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator;
-HSPLsun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator;->next()Ljava/nio/file/Path;
 HSPLsun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator;->readNextEntry()Ljava/nio/file/Path;+]Lsun/nio/fs/UnixDirectoryStream;Lsun/nio/fs/UnixDirectoryStream;]Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixPath;]Ljava/nio/file/DirectoryStream$Filter;Ljava/nio/file/Files$AcceptAllFilter;]Ljava/util/concurrent/locks/Lock;Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
 HSPLsun/nio/fs/UnixDirectoryStream;-><init>(Lsun/nio/fs/UnixPath;JLjava/nio/file/DirectoryStream$Filter;)V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
 HSPLsun/nio/fs/UnixDirectoryStream;->access$000(Lsun/nio/fs/UnixDirectoryStream;)J
-HSPLsun/nio/fs/UnixDirectoryStream;->access$100(Lsun/nio/fs/UnixDirectoryStream;)Lsun/nio/fs/UnixPath;
-HSPLsun/nio/fs/UnixDirectoryStream;->access$200(Lsun/nio/fs/UnixDirectoryStream;)Ljava/nio/file/DirectoryStream$Filter;
 HSPLsun/nio/fs/UnixDirectoryStream;->closeImpl()Z+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;
 HSPLsun/nio/fs/UnixDirectoryStream;->isOpen()Z
 HSPLsun/nio/fs/UnixDirectoryStream;->iterator(Ljava/nio/file/DirectoryStream;)Ljava/util/Iterator;
@@ -8292,10 +8896,11 @@
 HSPLsun/nio/fs/UnixFileSystem;->normalizeJavaPath(Ljava/lang/String;)Ljava/lang/String;
 HSPLsun/nio/fs/UnixFileSystem;->normalizeNativePath([C)[C
 HSPLsun/nio/fs/UnixFileSystem;->provider()Ljava/nio/file/spi/FileSystemProvider;
+HSPLsun/nio/fs/UnixFileSystemProvider$3;-><clinit>()V
 HSPLsun/nio/fs/UnixFileSystemProvider;->checkAccess(Ljava/nio/file/Path;[Ljava/nio/file/AccessMode;)V+]Lsun/nio/fs/UnixException;Lsun/nio/fs/UnixException;]Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixPath;
 HSPLsun/nio/fs/UnixFileSystemProvider;->checkPath(Ljava/nio/file/Path;)Lsun/nio/fs/UnixPath;
 HSPLsun/nio/fs/UnixFileSystemProvider;->getFileAttributeView(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/FileAttributeView;
-HSPLsun/nio/fs/UnixFileSystemProvider;->newByteChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel;
+HSPLsun/nio/fs/UnixFileSystemProvider;->newByteChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel;+]Lsun/nio/fs/UnixException;Lsun/nio/fs/UnixException;
 HSPLsun/nio/fs/UnixFileSystemProvider;->newDirectoryStream(Ljava/nio/file/Path;Ljava/nio/file/DirectoryStream$Filter;)Ljava/nio/file/DirectoryStream;+]Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixPath;
 HSPLsun/nio/fs/UnixFileSystemProvider;->newFileChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/FileChannel;+]Lsun/nio/fs/UnixFileSystemProvider;Lsun/nio/fs/LinuxFileSystemProvider;
 HSPLsun/nio/fs/UnixFileSystemProvider;->readAttributes(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/BasicFileAttributes;+]Ljava/nio/file/attribute/BasicFileAttributeView;Lsun/nio/fs/UnixFileAttributeViews$Basic;]Lsun/nio/fs/UnixFileSystemProvider;Lsun/nio/fs/LinuxFileSystemProvider;
@@ -8304,12 +8909,13 @@
 HSPLsun/nio/fs/UnixNativeDispatcher;->lstat(Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixFileAttributes;)V
 HSPLsun/nio/fs/UnixNativeDispatcher;->open(Lsun/nio/fs/UnixPath;II)I
 HSPLsun/nio/fs/UnixNativeDispatcher;->openatSupported()Z
-HSPLsun/nio/fs/UnixNativeDispatcher;->stat(Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixFileAttributes;)V
 HSPLsun/nio/fs/UnixPath;-><init>(Lsun/nio/fs/UnixFileSystem;Ljava/lang/String;)V
 HSPLsun/nio/fs/UnixPath;-><init>(Lsun/nio/fs/UnixFileSystem;[B)V
+HSPLsun/nio/fs/UnixPath;->asByteArray()[B
 HSPLsun/nio/fs/UnixPath;->checkNotNul(Ljava/lang/String;C)V
 HSPLsun/nio/fs/UnixPath;->checkRead()V
-HSPLsun/nio/fs/UnixPath;->encode(Lsun/nio/fs/UnixFileSystem;Ljava/lang/String;)[B+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/ref/SoftReference;Ljava/lang/ref/SoftReference;]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal;]Lsun/nio/fs/UnixFileSystem;Lsun/nio/fs/LinuxFileSystem;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;
+HSPLsun/nio/fs/UnixPath;->checkWrite()V
+HSPLsun/nio/fs/UnixPath;->encode(Lsun/nio/fs/UnixFileSystem;Ljava/lang/String;)[B+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/ref/SoftReference;Ljava/lang/ref/SoftReference;]Ljava/nio/charset/Charset;missing_types]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetEncoder;missing_types]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal;]Lsun/nio/fs/UnixFileSystem;Lsun/nio/fs/LinuxFileSystem;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;
 HSPLsun/nio/fs/UnixPath;->getByteArrayForSysCalls()[B+]Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixPath;]Lsun/nio/fs/UnixFileSystem;Lsun/nio/fs/LinuxFileSystem;
 HSPLsun/nio/fs/UnixPath;->getFileSystem()Ljava/nio/file/FileSystem;+]Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixPath;
 HSPLsun/nio/fs/UnixPath;->getFileSystem()Lsun/nio/fs/UnixFileSystem;
@@ -8344,7 +8950,7 @@
 HSPLsun/security/jca/GetInstance$Instance;-><init>(Ljava/security/Provider;Ljava/lang/Object;Lsun/security/jca/GetInstance$1;)V
 HSPLsun/security/jca/GetInstance$Instance;->toArray()[Ljava/lang/Object;
 HSPLsun/security/jca/GetInstance;->checkSuperClass(Ljava/security/Provider$Service;Ljava/lang/Class;Ljava/lang/Class;)V+]Ljava/lang/Class;Ljava/lang/Class;
-HSPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;+]Lsun/security/jca/ProviderList;Lsun/security/jca/ProviderList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lsun/security/jca/ProviderList;Lsun/security/jca/ProviderList;
 HSPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)Lsun/security/jca/GetInstance$Instance;
 HSPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
 HSPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/security/Provider;)Lsun/security/jca/GetInstance$Instance;
@@ -8372,7 +8978,7 @@
 HSPLsun/security/jca/ProviderList$ServiceList;->access$200(Lsun/security/jca/ProviderList$ServiceList;I)Ljava/security/Provider$Service;
 HSPLsun/security/jca/ProviderList$ServiceList;->addService(Ljava/security/Provider$Service;)V+]Ljava/util/List;Ljava/util/ArrayList;
 HSPLsun/security/jca/ProviderList$ServiceList;->iterator()Ljava/util/Iterator;
-HSPLsun/security/jca/ProviderList$ServiceList;->tryGet(I)Ljava/security/Provider$Service;+]Lsun/security/jca/ProviderList;Lsun/security/jca/ProviderList;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Arrays$ArrayList;]Ljava/security/Provider;megamorphic_types]Ljava/util/Iterator;Ljava/util/AbstractList$Itr;
+HSPLsun/security/jca/ProviderList$ServiceList;->tryGet(I)Ljava/security/Provider$Service;+]Lsun/security/jca/ProviderList;Lsun/security/jca/ProviderList;]Ljava/security/Provider;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Arrays$ArrayList;]Ljava/util/Iterator;Ljava/util/AbstractList$Itr;
 HSPLsun/security/jca/ProviderList;-><init>([Lsun/security/jca/ProviderConfig;Z)V
 HSPLsun/security/jca/ProviderList;->access$100(Lsun/security/jca/ProviderList;)[Lsun/security/jca/ProviderConfig;
 HSPLsun/security/jca/ProviderList;->getIndex(Ljava/lang/String;)I+]Lsun/security/jca/ProviderList;Lsun/security/jca/ProviderList;]Ljava/security/Provider;megamorphic_types
@@ -8434,14 +9040,15 @@
 HSPLsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;[B)Lsun/security/pkcs/SignerInfo;
 HSPLsun/security/provider/X509Factory;->addToCache(Lsun/security/util/Cache;[BLjava/lang/Object;)V+]Lsun/security/util/Cache;Lsun/security/util/MemoryCache;
 HSPLsun/security/provider/X509Factory;->getFromCache(Lsun/security/util/Cache;[B)Ljava/lang/Object;+]Lsun/security/util/Cache;Lsun/security/util/MemoryCache;
-HSPLsun/security/provider/X509Factory;->intern(Ljava/security/cert/X509Certificate;)Lsun/security/x509/X509CertImpl;+]Lsun/security/x509/X509CertImpl;Lsun/security/x509/X509CertImpl;]Ljava/security/cert/X509Certificate;missing_types
+HSPLsun/security/provider/X509Factory;->intern(Ljava/security/cert/X509Certificate;)Lsun/security/x509/X509CertImpl;+]Ljava/security/cert/X509Certificate;missing_types]Lsun/security/x509/X509CertImpl;Lsun/security/x509/X509CertImpl;
 HSPLsun/security/provider/certpath/AdaptableX509CertSelector;-><init>()V
 HSPLsun/security/provider/certpath/AdaptableX509CertSelector;->match(Ljava/security/cert/Certificate;)Z+]Ljava/security/cert/X509Certificate;missing_types]Ljava/math/BigInteger;Ljava/math/BigInteger;
 HSPLsun/security/provider/certpath/AdaptableX509CertSelector;->matchSubjectKeyID(Ljava/security/cert/X509Certificate;)Z+]Ljava/security/cert/X509Certificate;missing_types]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream;
 HSPLsun/security/provider/certpath/AdaptableX509CertSelector;->setSkiAndSerialNumber(Lsun/security/x509/AuthorityKeyIdentifierExtension;)V+]Lsun/security/x509/AuthorityKeyIdentifierExtension;Lsun/security/x509/AuthorityKeyIdentifierExtension;
 HSPLsun/security/provider/certpath/AlgorithmChecker;-><init>(Ljava/security/cert/TrustAnchor;)V
 HSPLsun/security/provider/certpath/AlgorithmChecker;-><init>(Ljava/security/cert/TrustAnchor;Ljava/security/AlgorithmConstraints;)V+]Ljava/security/cert/X509Certificate;missing_types]Ljava/security/cert/TrustAnchor;Ljava/security/cert/TrustAnchor;
-HSPLsun/security/provider/certpath/AlgorithmChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V+]Lsun/security/x509/X509CertImpl;Lsun/security/x509/X509CertImpl;]Lsun/security/x509/AlgorithmId;Lsun/security/x509/AlgorithmId;]Lsun/security/util/DisabledAlgorithmConstraints;Lsun/security/util/DisabledAlgorithmConstraints;]Ljava/security/AlgorithmConstraints;Lsun/security/util/DisabledAlgorithmConstraints;]Ljava/util/Set;Ljava/util/RegularEnumSet;]Ljava/security/cert/X509Certificate;missing_types]Ljava/security/cert/Certificate;missing_types
+HSPLsun/security/provider/certpath/AlgorithmChecker;->check(Ljava/security/PublicKey;Lsun/security/x509/AlgorithmId;)V
+HSPLsun/security/provider/certpath/AlgorithmChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V+]Ljava/security/cert/X509Certificate;missing_types]Lsun/security/x509/X509CertImpl;Lsun/security/x509/X509CertImpl;]Lsun/security/x509/AlgorithmId;Lsun/security/x509/AlgorithmId;]Ljava/security/cert/Certificate;missing_types]Lsun/security/util/DisabledAlgorithmConstraints;Lsun/security/util/DisabledAlgorithmConstraints;]Ljava/security/AlgorithmConstraints;Lsun/security/util/DisabledAlgorithmConstraints;]Ljava/util/Set;Ljava/util/RegularEnumSet;
 HSPLsun/security/provider/certpath/AlgorithmChecker;->checkFingerprint(Ljava/security/cert/X509Certificate;)Z
 HSPLsun/security/provider/certpath/AlgorithmChecker;->init(Z)V
 HSPLsun/security/provider/certpath/BasicChecker;-><init>(Ljava/security/cert/TrustAnchor;Ljava/util/Date;Ljava/lang/String;Z)V+]Ljava/security/cert/X509Certificate;missing_types]Ljava/security/cert/TrustAnchor;Ljava/security/cert/TrustAnchor;
@@ -8449,7 +9056,7 @@
 HSPLsun/security/provider/certpath/BasicChecker;->getPublicKey()Ljava/security/PublicKey;
 HSPLsun/security/provider/certpath/BasicChecker;->init(Z)V
 HSPLsun/security/provider/certpath/BasicChecker;->updateState(Ljava/security/cert/X509Certificate;)V+]Ljava/security/cert/X509Certificate;missing_types
-HSPLsun/security/provider/certpath/BasicChecker;->verifyNameChaining(Ljava/security/cert/X509Certificate;)V+]Ljavax/security/auth/x500/X500Principal;Ljavax/security/auth/x500/X500Principal;]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name;]Ljava/security/cert/X509Certificate;missing_types
+HSPLsun/security/provider/certpath/BasicChecker;->verifyNameChaining(Ljava/security/cert/X509Certificate;)V+]Ljava/security/cert/X509Certificate;missing_types]Ljavax/security/auth/x500/X500Principal;Ljavax/security/auth/x500/X500Principal;]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name;
 HSPLsun/security/provider/certpath/BasicChecker;->verifySignature(Ljava/security/cert/X509Certificate;)V+]Ljava/security/cert/X509Certificate;missing_types
 HSPLsun/security/provider/certpath/BasicChecker;->verifyTimestamp(Ljava/security/cert/X509Certificate;)V+]Ljava/security/cert/X509Certificate;missing_types
 HSPLsun/security/provider/certpath/CertId;-><init>(Ljava/security/cert/X509Certificate;Lsun/security/x509/SerialNumber;)V
@@ -8486,7 +9093,7 @@
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;-><init>(Ljava/security/cert/PKIXParameters;)V+]Ljava/security/cert/PKIXParameters;Ljava/security/cert/PKIXParameters;,Ljava/security/cert/PKIXBuilderParameters;]Ljava/security/cert/TrustAnchor;Ljava/security/cert/TrustAnchor;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->anyPolicyInhibited()Z+]Ljava/security/cert/PKIXParameters;Ljava/security/cert/PKIXParameters;
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->certPath()Ljava/security/cert/CertPath;
-HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->certPathCheckers()Ljava/util/List;+]Ljava/security/cert/PKIXParameters;Ljava/security/cert/PKIXParameters;
+HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->certPathCheckers()Ljava/util/List;+]Ljava/security/cert/PKIXParameters;Ljava/security/cert/PKIXParameters;,Ljava/security/cert/PKIXBuilderParameters;
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->certStores()Ljava/util/List;
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->certificates()Ljava/util/List;+]Ljava/security/cert/CertPath;missing_types
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->date()Ljava/util/Date;+]Ljava/security/cert/PKIXParameters;Ljava/security/cert/PKIXParameters;
@@ -8504,8 +9111,8 @@
 HSPLsun/security/provider/certpath/PKIXCertPathValidator;->engineGetRevocationChecker()Ljava/security/cert/CertPathChecker;
 HSPLsun/security/provider/certpath/PKIXCertPathValidator;->engineValidate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult;
 HSPLsun/security/provider/certpath/PKIXCertPathValidator;->validate(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult;+]Lsun/security/provider/certpath/PKIX$ValidatorParams;Lsun/security/provider/certpath/PKIX$ValidatorParams;]Lsun/security/provider/certpath/BasicChecker;Lsun/security/provider/certpath/BasicChecker;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/ArrayList;]Lsun/security/provider/certpath/PolicyChecker;Lsun/security/provider/certpath/PolicyChecker;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Lsun/security/provider/certpath/RevocationChecker;Lsun/security/provider/certpath/RevocationChecker;
-HSPLsun/security/provider/certpath/PKIXCertPathValidator;->validate(Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult;+]Lsun/security/provider/certpath/PKIX$ValidatorParams;Lsun/security/provider/certpath/PKIX$ValidatorParams;]Lsun/security/x509/X509CertImpl;Lsun/security/x509/X509CertImpl;]Ljava/util/List;Ljava/util/ArrayList;]Lsun/security/provider/certpath/AdaptableX509CertSelector;Lsun/security/provider/certpath/AdaptableX509CertSelector;]Ljava/security/cert/TrustAnchor;Ljava/security/cert/TrustAnchor;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;]Ljava/security/cert/X509Certificate;missing_types
-HSPLsun/security/provider/certpath/PKIXMasterCertPathValidator;->validate(Ljava/security/cert/CertPath;Ljava/util/List;Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/security/cert/PKIXCertPathChecker;megamorphic_types]Ljava/util/Set;Ljava/util/HashSet;]Ljava/security/cert/X509Certificate;missing_types
+HSPLsun/security/provider/certpath/PKIXCertPathValidator;->validate(Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult;+]Lsun/security/provider/certpath/PKIX$ValidatorParams;Lsun/security/provider/certpath/PKIX$ValidatorParams;]Ljava/security/cert/X509Certificate;missing_types]Lsun/security/x509/X509CertImpl;Lsun/security/x509/X509CertImpl;]Ljava/util/List;Ljava/util/ArrayList;]Lsun/security/provider/certpath/AdaptableX509CertSelector;Lsun/security/provider/certpath/AdaptableX509CertSelector;]Ljava/security/cert/TrustAnchor;Ljava/security/cert/TrustAnchor;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
+HSPLsun/security/provider/certpath/PKIXMasterCertPathValidator;->validate(Ljava/security/cert/CertPath;Ljava/util/List;Ljava/util/List;)V+]Ljava/security/cert/X509Certificate;missing_types]Ljava/util/List;Ljava/util/ArrayList;]Ljava/security/cert/PKIXCertPathChecker;megamorphic_types]Ljava/util/Set;Ljava/util/HashSet;]Ljava/security/cert/CertPathValidatorException;Ljava/security/cert/CertPathValidatorException;
 HSPLsun/security/provider/certpath/PolicyChecker;-><init>(Ljava/util/Set;IZZZZLsun/security/provider/certpath/PolicyNodeImpl;)V+]Ljava/util/Set;Ljava/util/HashSet;,Ljava/util/Collections$EmptySet;
 HSPLsun/security/provider/certpath/PolicyChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V+]Ljava/util/Collection;Ljava/util/HashSet;]Lsun/security/util/ObjectIdentifier;Lsun/security/util/ObjectIdentifier;
 HSPLsun/security/provider/certpath/PolicyChecker;->checkPolicy(Ljava/security/cert/X509Certificate;)V
@@ -8546,7 +9153,7 @@
 HSPLsun/security/provider/certpath/RevocationChecker;->clone()Lsun/security/provider/certpath/RevocationChecker;
 HSPLsun/security/provider/certpath/RevocationChecker;->getResponderCert(Lsun/security/provider/certpath/RevocationChecker$RevocationProperties;Ljava/util/Set;Ljava/util/List;)Ljava/security/cert/X509Certificate;
 HSPLsun/security/provider/certpath/RevocationChecker;->getRevocationProperties()Lsun/security/provider/certpath/RevocationChecker$RevocationProperties;
-HSPLsun/security/provider/certpath/RevocationChecker;->init(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)V+]Lsun/security/provider/certpath/PKIX$ValidatorParams;Lsun/security/provider/certpath/PKIX$ValidatorParams;]Lsun/security/provider/certpath/RevocationChecker;Lsun/security/provider/certpath/RevocationChecker;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/security/cert/PKIXRevocationChecker$Option;Ljava/security/cert/PKIXRevocationChecker$Option;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
+HSPLsun/security/provider/certpath/RevocationChecker;->init(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)V+]Lsun/security/provider/certpath/PKIX$ValidatorParams;Lsun/security/provider/certpath/PKIX$ValidatorParams;]Lsun/security/provider/certpath/RevocationChecker;Lsun/security/provider/certpath/RevocationChecker;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;]Ljava/security/cert/PKIXRevocationChecker$Option;Ljava/security/cert/PKIXRevocationChecker$Option;
 HSPLsun/security/provider/certpath/RevocationChecker;->init(Z)V+]Ljava/security/cert/X509Certificate;missing_types]Lsun/security/provider/certpath/PKIX$ValidatorParams;Lsun/security/provider/certpath/PKIX$ValidatorParams;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/LinkedList;Ljava/util/LinkedList;]Ljava/security/cert/CertPath;missing_types]Ljava/security/cert/TrustAnchor;Ljava/security/cert/TrustAnchor;
 HSPLsun/security/provider/certpath/RevocationChecker;->toURI(Ljava/lang/String;)Ljava/net/URI;
 HSPLsun/security/provider/certpath/RevocationChecker;->updateState(Ljava/security/cert/X509Certificate;)V
@@ -8561,7 +9168,7 @@
 HSPLsun/security/util/BitArray;->position(I)I
 HSPLsun/security/util/BitArray;->subscript(I)I
 HSPLsun/security/util/BitArray;->toBooleanArray()[Z
-HSPLsun/security/util/BitArray;->toByteArray()[B
+HSPLsun/security/util/BitArray;->toByteArray()[B+][B[B
 HSPLsun/security/util/Cache$EqualByteArray;-><init>([B)V
 HSPLsun/security/util/Cache$EqualByteArray;->equals(Ljava/lang/Object;)Z
 HSPLsun/security/util/Cache$EqualByteArray;->hashCode()I
@@ -8655,24 +9262,25 @@
 HSPLsun/security/util/DerValue;->toDerInputStream()Lsun/security/util/DerInputStream;
 HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->getConstraints(Ljava/lang/String;)Ljava/util/Set;+]Ljava/util/Map;Ljava/util/HashMap;
 HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Ljava/security/Key;)Z+]Lsun/security/util/DisabledAlgorithmConstraints$Constraint;Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;]Ljava/security/Key;missing_types]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Set;Ljava/util/HashSet;
-HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Lsun/security/util/CertConstraintParameters;)V+]Lsun/security/util/CertConstraintParameters;Lsun/security/util/CertConstraintParameters;]Lsun/security/util/DisabledAlgorithmConstraints$Constraint;Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Set;Ljava/util/HashSet;]Ljava/security/cert/X509Certificate;missing_types]Ljava/security/PublicKey;missing_types
+HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Lsun/security/util/CertConstraintParameters;)V+]Ljava/security/cert/X509Certificate;missing_types]Lsun/security/util/CertConstraintParameters;Lsun/security/util/CertConstraintParameters;]Ljava/security/PublicKey;missing_types]Lsun/security/util/DisabledAlgorithmConstraints$Constraint;Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Set;Ljava/util/HashSet;
 HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Ljava/security/Key;)Z
-HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Lsun/security/util/CertConstraintParameters;)V+]Lsun/security/util/CertConstraintParameters;Lsun/security/util/CertConstraintParameters;]Ljava/security/cert/X509Certificate;missing_types
+HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Lsun/security/util/CertConstraintParameters;)V+]Ljava/security/cert/X509Certificate;missing_types]Lsun/security/util/CertConstraintParameters;Lsun/security/util/CertConstraintParameters;
 HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permitsImpl(Ljava/security/Key;)Z+]Ljava/lang/String;Ljava/lang/String;]Ljava/security/Key;missing_types
 HSPLsun/security/util/DisabledAlgorithmConstraints;->access$000()Lsun/security/util/Debug;
 HSPLsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Ljava/lang/String;Ljava/security/Key;Ljava/security/AlgorithmParameters;)Z+]Lsun/security/util/DisabledAlgorithmConstraints;Lsun/security/util/DisabledAlgorithmConstraints;]Lsun/security/util/DisabledAlgorithmConstraints$Constraints;Lsun/security/util/DisabledAlgorithmConstraints$Constraints;]Ljava/security/Key;missing_types
-HSPLsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Lsun/security/util/CertConstraintParameters;)V+]Lsun/security/util/CertConstraintParameters;Lsun/security/util/CertConstraintParameters;]Lsun/security/util/DisabledAlgorithmConstraints;Lsun/security/util/DisabledAlgorithmConstraints;]Lsun/security/util/DisabledAlgorithmConstraints$Constraints;Lsun/security/util/DisabledAlgorithmConstraints$Constraints;]Ljava/security/cert/X509Certificate;missing_types]Ljava/security/PublicKey;missing_types
+HSPLsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Lsun/security/util/CertConstraintParameters;)V+]Ljava/security/cert/X509Certificate;missing_types]Lsun/security/util/CertConstraintParameters;Lsun/security/util/CertConstraintParameters;]Lsun/security/util/DisabledAlgorithmConstraints;Lsun/security/util/DisabledAlgorithmConstraints;]Ljava/security/PublicKey;missing_types]Lsun/security/util/DisabledAlgorithmConstraints$Constraints;Lsun/security/util/DisabledAlgorithmConstraints$Constraints;
 HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Ljava/lang/String;Ljava/security/AlgorithmParameters;)Z+]Ljava/util/Set;Ljava/util/RegularEnumSet;,Ljava/util/Collections$UnmodifiableSet;
 HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Ljava/lang/String;Ljava/security/Key;Ljava/security/AlgorithmParameters;)Z
 HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Ljava/security/Key;)Z
 HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Lsun/security/util/CertConstraintParameters;)V
-HSPLsun/security/util/KeyUtil;->getKeySize(Ljava/security/Key;)I+]Ljava/security/interfaces/RSAKey;missing_types]Ljava/math/BigInteger;Ljava/math/BigInteger;]Ljava/security/spec/ECParameterSpec;Ljava/security/spec/ECParameterSpec;]Ljava/security/interfaces/ECKey;missing_types
+HSPLsun/security/util/KeyUtil;->getKeySize(Ljava/security/Key;)I+]Ljava/security/interfaces/ECKey;missing_types]Ljava/security/interfaces/RSAKey;missing_types]Ljava/math/BigInteger;Ljava/math/BigInteger;]Ljava/security/spec/ECParameterSpec;Ljava/security/spec/ECParameterSpec;
 HSPLsun/security/util/ManifestDigester$Entry;-><init>(III[B)V
 HSPLsun/security/util/ManifestDigester$Position;-><init>()V
 HSPLsun/security/util/ManifestDigester;-><init>([B)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLsun/security/util/ManifestDigester;->findSection(ILsun/security/util/ManifestDigester$Position;)Z
 HSPLsun/security/util/ManifestDigester;->isNameAttr([BI)Z
 HSPLsun/security/util/ManifestDigester;->manifestDigest(Ljava/security/MessageDigest;)[B
+HSPLsun/security/util/ManifestEntryVerifier$SunProviderHolder;->access$000()Ljava/security/Provider;
 HSPLsun/security/util/ManifestEntryVerifier;-><init>(Ljava/util/jar/Manifest;)V
 HSPLsun/security/util/ManifestEntryVerifier;->getEntry()Ljava/util/jar/JarEntry;
 HSPLsun/security/util/ManifestEntryVerifier;->setEntry(Ljava/lang/String;Ljava/util/jar/JarEntry;)V+]Ljava/util/Base64$Decoder;Ljava/util/Base64$Decoder;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/jar/Attributes;Ljava/util/jar/Attributes;]Ljava/lang/Object;Ljava/util/jar/Attributes$Name;]Ljava/util/jar/Manifest;Ljava/util/jar/Manifest;]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
@@ -8685,7 +9293,7 @@
 HSPLsun/security/util/MemoryCache;->emptyQueue()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue;]Ljava/util/Map;Ljava/util/LinkedHashMap;]Lsun/security/util/MemoryCache$CacheEntry;Lsun/security/util/MemoryCache$SoftCacheEntry;
 HSPLsun/security/util/MemoryCache;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Lsun/security/util/MemoryCache$CacheEntry;Lsun/security/util/MemoryCache$SoftCacheEntry;]Ljava/util/Map;Ljava/util/LinkedHashMap;
 HSPLsun/security/util/MemoryCache;->newEntry(Ljava/lang/Object;Ljava/lang/Object;JLjava/lang/ref/ReferenceQueue;)Lsun/security/util/MemoryCache$CacheEntry;
-HSPLsun/security/util/MemoryCache;->put(Ljava/lang/Object;Ljava/lang/Object;)V+]Lsun/security/util/MemoryCache$CacheEntry;Lsun/security/util/MemoryCache$SoftCacheEntry;]Ljava/util/Collection;Ljava/util/LinkedHashMap$LinkedValues;]Lsun/security/util/MemoryCache;Lsun/security/util/MemoryCache;]Ljava/util/Map;Ljava/util/LinkedHashMap;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedValueIterator;
+HSPLsun/security/util/MemoryCache;->put(Ljava/lang/Object;Ljava/lang/Object;)V+]Lsun/security/util/MemoryCache;Lsun/security/util/MemoryCache;]Ljava/util/Map;Ljava/util/LinkedHashMap;]Lsun/security/util/MemoryCache$CacheEntry;Lsun/security/util/MemoryCache$SoftCacheEntry;]Ljava/util/Collection;Ljava/util/LinkedHashMap$LinkedValues;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedValueIterator;
 HSPLsun/security/util/ObjectIdentifier;-><init>(Lsun/security/util/DerInputBuffer;)V+]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream;
 HSPLsun/security/util/ObjectIdentifier;-><init>(Lsun/security/util/DerInputStream;)V+]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream;
 HSPLsun/security/util/ObjectIdentifier;->check([B)V
@@ -8696,6 +9304,8 @@
 HSPLsun/security/util/SignatureFileVerifier;-><init>(Ljava/util/ArrayList;Lsun/security/util/ManifestDigester;Ljava/lang/String;[B)V
 HSPLsun/security/util/SignatureFileVerifier;->getDigest(Ljava/lang/String;)Ljava/security/MessageDigest;
 HSPLsun/security/util/SignatureFileVerifier;->getSigners([Lsun/security/pkcs/SignerInfo;Lsun/security/pkcs/PKCS7;)[Ljava/security/CodeSigner;
+HSPLsun/security/util/SignatureFileVerifier;->isBlockOrSF(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String;
+HSPLsun/security/util/SignatureFileVerifier;->matches([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z
 HSPLsun/security/util/SignatureFileVerifier;->needSignatureFileBytes()Z
 HSPLsun/security/util/SignatureFileVerifier;->process(Ljava/util/Hashtable;Ljava/util/List;)V
 HSPLsun/security/util/SignatureFileVerifier;->processImpl(Ljava/util/Hashtable;Ljava/util/List;)V+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/jar/Attributes;Ljava/util/jar/Attributes;]Ljava/util/jar/Manifest;Ljava/util/jar/Manifest;]Ljava/util/Map;Ljava/util/HashMap;]Lsun/security/pkcs/PKCS7;Lsun/security/pkcs/PKCS7;]Lsun/security/util/SignatureFileVerifier;Lsun/security/util/SignatureFileVerifier;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
@@ -8711,7 +9321,7 @@
 HSPLsun/security/x509/AVA;->parseString(Ljava/io/Reader;IILjava/lang/StringBuilder;)Lsun/security/util/DerValue;
 HSPLsun/security/x509/AVA;->readChar(Ljava/io/Reader;Ljava/lang/String;)I
 HSPLsun/security/x509/AVA;->toKeyword(ILjava/util/Map;)Ljava/lang/String;
-HSPLsun/security/x509/AVA;->toRFC2253CanonicalString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Lsun/security/util/DerValue;Lsun/security/util/DerValue;
+HSPLsun/security/x509/AVA;->toRFC2253CanonicalString()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lsun/security/util/DerValue;Lsun/security/util/DerValue;
 HSPLsun/security/x509/AVA;->toRFC2253String(Ljava/util/Map;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Lsun/security/util/DerValue;Lsun/security/util/DerValue;
 HSPLsun/security/x509/AVAKeyword;->getKeyword(Lsun/security/util/ObjectIdentifier;ILjava/util/Map;)Ljava/lang/String;+]Lsun/security/util/ObjectIdentifier;Lsun/security/util/ObjectIdentifier;]Ljava/util/Map;Ljava/util/HashMap;,Ljava/util/Collections$EmptyMap;
 HSPLsun/security/x509/AVAKeyword;->getOID(Ljava/lang/String;ILjava/util/Map;)Lsun/security/util/ObjectIdentifier;
@@ -8816,7 +9426,7 @@
 HSPLsun/security/x509/X500Name;->equals(Ljava/lang/Object;)Z+]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name;
 HSPLsun/security/x509/X500Name;->escaped(IILjava/lang/String;)Z
 HSPLsun/security/x509/X500Name;->generateRFC2253DN(Ljava/util/Map;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lsun/security/x509/RDN;Lsun/security/x509/RDN;
-HSPLsun/security/x509/X500Name;->getEncoded()[B+]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name;
+HSPLsun/security/x509/X500Name;->getEncoded()[B+][B[B]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name;
 HSPLsun/security/x509/X500Name;->getEncodedInternal()[B+]Lsun/security/util/DerOutputStream;Lsun/security/util/DerOutputStream;]Lsun/security/x509/RDN;Lsun/security/x509/RDN;
 HSPLsun/security/x509/X500Name;->getRFC2253CanonicalName()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lsun/security/x509/RDN;Lsun/security/x509/RDN;
 HSPLsun/security/x509/X500Name;->getRFC2253Name()Ljava/lang/String;+]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name;
@@ -8855,7 +9465,7 @@
 HSPLsun/security/x509/X509CertInfo;-><init>(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/X509CertInfo;-><init>([B)V
 HSPLsun/security/x509/X509CertInfo;->attributeMap(Ljava/lang/String;)I+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/Map;Ljava/util/HashMap;
-HSPLsun/security/x509/X509CertInfo;->get(Ljava/lang/String;)Ljava/lang/Object;+]Lsun/security/x509/X509AttributeName;Lsun/security/x509/X509AttributeName;]Lsun/security/x509/CertificateAlgorithmId;Lsun/security/x509/CertificateAlgorithmId;]Lsun/security/x509/CertificateSerialNumber;Lsun/security/x509/CertificateSerialNumber;]Lsun/security/x509/CertificateX509Key;Lsun/security/x509/CertificateX509Key;]Lsun/security/x509/CertificateValidity;Lsun/security/x509/CertificateValidity;]Lsun/security/x509/CertificateExtensions;Lsun/security/x509/CertificateExtensions;
+HSPLsun/security/x509/X509CertInfo;->get(Ljava/lang/String;)Ljava/lang/Object;+]Lsun/security/x509/X509AttributeName;Lsun/security/x509/X509AttributeName;]Lsun/security/x509/CertificateAlgorithmId;Lsun/security/x509/CertificateAlgorithmId;]Lsun/security/x509/CertificateSerialNumber;Lsun/security/x509/CertificateSerialNumber;]Lsun/security/x509/CertificateX509Key;Lsun/security/x509/CertificateX509Key;]Lsun/security/x509/CertificateExtensions;Lsun/security/x509/CertificateExtensions;]Lsun/security/x509/CertificateValidity;Lsun/security/x509/CertificateValidity;
 HSPLsun/security/x509/X509CertInfo;->getEncodedInfo()[B
 HSPLsun/security/x509/X509CertInfo;->getX500Name(Ljava/lang/String;Z)Ljava/lang/Object;+]Ljava/lang/String;Ljava/lang/String;]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name;
 HSPLsun/security/x509/X509CertInfo;->parse(Lsun/security/util/DerValue;)V+]Lsun/security/util/DerValue;Lsun/security/util/DerValue;]Lsun/security/x509/CertificateVersion;Lsun/security/x509/CertificateVersion;]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream;]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name;
@@ -8863,11 +9473,14 @@
 HSPLsun/security/x509/X509Key;->buildX509Key(Lsun/security/x509/AlgorithmId;Lsun/security/util/BitArray;)Ljava/security/PublicKey;+]Ljava/security/KeyFactory;Ljava/security/KeyFactory;]Lsun/security/x509/AlgorithmId;Lsun/security/x509/AlgorithmId;]Lsun/security/util/DerOutputStream;Lsun/security/util/DerOutputStream;
 HSPLsun/security/x509/X509Key;->encode(Lsun/security/util/DerOutputStream;Lsun/security/x509/AlgorithmId;Lsun/security/util/BitArray;)V+]Lsun/security/x509/AlgorithmId;Lsun/security/x509/AlgorithmId;]Lsun/security/util/DerOutputStream;Lsun/security/util/DerOutputStream;
 HSPLsun/security/x509/X509Key;->parse(Lsun/security/util/DerValue;)Ljava/security/PublicKey;+]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream;
-HSPLsun/util/calendar/AbstractCalendar;->getCalendarDate(JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/CalendarDate;+]Lsun/util/calendar/AbstractCalendar;Lsun/util/calendar/Gregorian;,Lsun/util/calendar/JulianCalendar;]Lsun/util/calendar/CalendarDate;Lsun/util/calendar/Gregorian$Date;,Lsun/util/calendar/JulianCalendar$Date;]Llibcore/util/ZoneInfo;Llibcore/util/ZoneInfo;
+HSPLsun/util/calendar/AbstractCalendar;-><init>()V
+HSPLsun/util/calendar/AbstractCalendar;->getCalendarDate(JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/CalendarDate;+]Lsun/util/calendar/AbstractCalendar;Lsun/util/calendar/Gregorian;,Lsun/util/calendar/JulianCalendar;]Lsun/util/calendar/CalendarDate;Lsun/util/calendar/Gregorian$Date;,Lsun/util/calendar/JulianCalendar$Date;]Llibcore/util/ZoneInfo;missing_types]Ljava/util/TimeZone;Ljava/util/SimpleTimeZone;
 HSPLsun/util/calendar/AbstractCalendar;->getDayOfWeekDateOnOrBefore(JI)J
-HSPLsun/util/calendar/AbstractCalendar;->getTime(Lsun/util/calendar/CalendarDate;)J+]Lsun/util/calendar/AbstractCalendar;Lsun/util/calendar/Gregorian;]Ljava/util/TimeZone;Llibcore/util/ZoneInfo;]Lsun/util/calendar/CalendarDate;Lsun/util/calendar/Gregorian$Date;
+HSPLsun/util/calendar/AbstractCalendar;->getEras()[Lsun/util/calendar/Era;
+HSPLsun/util/calendar/AbstractCalendar;->getTime(Lsun/util/calendar/CalendarDate;)J+]Lsun/util/calendar/AbstractCalendar;Lsun/util/calendar/Gregorian;]Lsun/util/calendar/CalendarDate;Lsun/util/calendar/Gregorian$Date;]Ljava/util/TimeZone;missing_types
 HSPLsun/util/calendar/AbstractCalendar;->getTimeOfDay(Lsun/util/calendar/CalendarDate;)J+]Lsun/util/calendar/AbstractCalendar;Lsun/util/calendar/Gregorian;]Lsun/util/calendar/CalendarDate;Lsun/util/calendar/Gregorian$Date;
 HSPLsun/util/calendar/AbstractCalendar;->getTimeOfDayValue(Lsun/util/calendar/CalendarDate;)J+]Lsun/util/calendar/CalendarDate;Lsun/util/calendar/Gregorian$Date;
+HSPLsun/util/calendar/AbstractCalendar;->setEras([Lsun/util/calendar/Era;)V
 HSPLsun/util/calendar/AbstractCalendar;->setTimeOfDay(Lsun/util/calendar/CalendarDate;I)Lsun/util/calendar/CalendarDate;+]Lsun/util/calendar/CalendarDate;Lsun/util/calendar/Gregorian$Date;,Lsun/util/calendar/JulianCalendar$Date;
 HSPLsun/util/calendar/BaseCalendar$Date;-><init>(Ljava/util/TimeZone;)V
 HSPLsun/util/calendar/BaseCalendar$Date;->getCachedJan1()J
@@ -8875,6 +9488,7 @@
 HSPLsun/util/calendar/BaseCalendar$Date;->hit(I)Z
 HSPLsun/util/calendar/BaseCalendar$Date;->hit(J)Z
 HSPLsun/util/calendar/BaseCalendar$Date;->setCache(IJI)V
+HSPLsun/util/calendar/BaseCalendar;-><init>()V
 HSPLsun/util/calendar/BaseCalendar;->getCalendarDateFromFixedDate(Lsun/util/calendar/CalendarDate;J)V+]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;]Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/Gregorian;
 HSPLsun/util/calendar/BaseCalendar;->getDayOfWeekFromFixedDate(J)I
 HSPLsun/util/calendar/BaseCalendar;->getDayOfYear(III)J+]Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/Gregorian;,Lsun/util/calendar/JulianCalendar;
@@ -8888,6 +9502,7 @@
 HSPLsun/util/calendar/CalendarDate;->clone()Ljava/lang/Object;
 HSPLsun/util/calendar/CalendarDate;->getDayOfMonth()I
 HSPLsun/util/calendar/CalendarDate;->getDayOfWeek()I+]Lsun/util/calendar/CalendarDate;Lsun/util/calendar/Gregorian$Date;,Lsun/util/calendar/JulianCalendar$Date;
+HSPLsun/util/calendar/CalendarDate;->getEra()Lsun/util/calendar/Era;
 HSPLsun/util/calendar/CalendarDate;->getHours()I
 HSPLsun/util/calendar/CalendarDate;->getMillis()I
 HSPLsun/util/calendar/CalendarDate;->getMinutes()I
@@ -8904,6 +9519,7 @@
 HSPLsun/util/calendar/CalendarDate;->setDayOfMonth(I)Lsun/util/calendar/CalendarDate;
 HSPLsun/util/calendar/CalendarDate;->setDayOfWeek(I)V
 HSPLsun/util/calendar/CalendarDate;->setDaylightSaving(I)V
+HSPLsun/util/calendar/CalendarDate;->setEra(Lsun/util/calendar/Era;)Lsun/util/calendar/CalendarDate;
 HSPLsun/util/calendar/CalendarDate;->setHours(I)Lsun/util/calendar/CalendarDate;
 HSPLsun/util/calendar/CalendarDate;->setLeapYear(Z)V
 HSPLsun/util/calendar/CalendarDate;->setMillis(I)Lsun/util/calendar/CalendarDate;
@@ -8916,9 +9532,15 @@
 HSPLsun/util/calendar/CalendarDate;->setYear(I)Lsun/util/calendar/CalendarDate;
 HSPLsun/util/calendar/CalendarDate;->setZone(Ljava/util/TimeZone;)Lsun/util/calendar/CalendarDate;
 HSPLsun/util/calendar/CalendarDate;->setZoneOffset(I)V
+HSPLsun/util/calendar/CalendarSystem;-><init>()V
+HSPLsun/util/calendar/CalendarSystem;->forName(Ljava/lang/String;)Lsun/util/calendar/CalendarSystem;
 HSPLsun/util/calendar/CalendarSystem;->getGregorianCalendar()Lsun/util/calendar/Gregorian;
 HSPLsun/util/calendar/CalendarUtils;->floorDivide(II)I
+HSPLsun/util/calendar/CalendarUtils;->floorDivide(JJ)J
 HSPLsun/util/calendar/CalendarUtils;->isGregorianLeapYear(I)Z
+HSPLsun/util/calendar/CalendarUtils;->isJulianLeapYear(I)Z
+HSPLsun/util/calendar/CalendarUtils;->mod(II)I
+HSPLsun/util/calendar/CalendarUtils;->mod(JJ)J
 HSPLsun/util/calendar/CalendarUtils;->sprintf0d(Ljava/lang/StringBuilder;II)Ljava/lang/StringBuilder;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLsun/util/calendar/Gregorian$Date;-><init>(Ljava/util/TimeZone;)V
 HSPLsun/util/calendar/Gregorian$Date;->getNormalizedYear()I+]Lsun/util/calendar/Gregorian$Date;Lsun/util/calendar/Gregorian$Date;
@@ -8929,6 +9551,17 @@
 HSPLsun/util/calendar/Gregorian;->getCalendarDate(JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/Gregorian$Date;
 HSPLsun/util/calendar/Gregorian;->newCalendarDate(Ljava/util/TimeZone;)Lsun/util/calendar/CalendarDate;+]Lsun/util/calendar/Gregorian;Lsun/util/calendar/Gregorian;
 HSPLsun/util/calendar/Gregorian;->newCalendarDate(Ljava/util/TimeZone;)Lsun/util/calendar/Gregorian$Date;
+HSPLsun/util/calendar/JulianCalendar$Date;-><init>(Ljava/util/TimeZone;)V
+HSPLsun/util/calendar/JulianCalendar$Date;->getNormalizedYear()I
+HSPLsun/util/calendar/JulianCalendar$Date;->setKnownEra(Lsun/util/calendar/Era;)V
+HSPLsun/util/calendar/JulianCalendar$Date;->setNormalizedYear(I)V
+HSPLsun/util/calendar/JulianCalendar;-><init>()V
+HSPLsun/util/calendar/JulianCalendar;->access$000()[Lsun/util/calendar/Era;
+HSPLsun/util/calendar/JulianCalendar;->getCalendarDateFromFixedDate(Lsun/util/calendar/CalendarDate;J)V+]Lsun/util/calendar/JulianCalendar;Lsun/util/calendar/JulianCalendar;]Lsun/util/calendar/JulianCalendar$Date;Lsun/util/calendar/JulianCalendar$Date;
+HSPLsun/util/calendar/JulianCalendar;->getFixedDate(IIILsun/util/calendar/BaseCalendar$Date;)J+]Lsun/util/calendar/JulianCalendar;Lsun/util/calendar/JulianCalendar;]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/JulianCalendar$Date;
+HSPLsun/util/calendar/JulianCalendar;->isLeapYear(I)Z
+HSPLsun/util/calendar/JulianCalendar;->newCalendarDate(Ljava/util/TimeZone;)Lsun/util/calendar/CalendarDate;
+HSPLsun/util/calendar/JulianCalendar;->newCalendarDate(Ljava/util/TimeZone;)Lsun/util/calendar/JulianCalendar$Date;
 HSPLsun/util/locale/BaseLocale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object;+]Lsun/util/locale/BaseLocale$Cache;Lsun/util/locale/BaseLocale$Cache;
 HSPLsun/util/locale/BaseLocale$Cache;->createObject(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale;+]Ljava/lang/ref/SoftReference;Ljava/lang/ref/SoftReference;
 HSPLsun/util/locale/BaseLocale$Cache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object;+]Lsun/util/locale/BaseLocale$Cache;Lsun/util/locale/BaseLocale$Cache;
@@ -8952,13 +9585,17 @@
 HSPLsun/util/locale/BaseLocale;->getVariant()Ljava/lang/String;
 HSPLsun/util/locale/BaseLocale;->hashCode()I+]Ljava/lang/String;Ljava/lang/String;
 HSPLsun/util/locale/InternalLocaleBuilder;-><init>()V
+HSPLsun/util/locale/InternalLocaleBuilder;->checkVariants(Ljava/lang/String;Ljava/lang/String;)I
 HSPLsun/util/locale/InternalLocaleBuilder;->clear()Lsun/util/locale/InternalLocaleBuilder;+]Lsun/util/locale/InternalLocaleBuilder;Lsun/util/locale/InternalLocaleBuilder;
 HSPLsun/util/locale/InternalLocaleBuilder;->clearExtensions()Lsun/util/locale/InternalLocaleBuilder;
-HSPLsun/util/locale/InternalLocaleBuilder;->getBaseLocale()Lsun/util/locale/BaseLocale;+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Ljava/util/Map;Ljava/util/HashMap;
+HSPLsun/util/locale/InternalLocaleBuilder;->getBaseLocale()Lsun/util/locale/BaseLocale;+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;
 HSPLsun/util/locale/InternalLocaleBuilder;->getLocaleExtensions()Lsun/util/locale/LocaleExtensions;+]Lsun/util/locale/LocaleExtensions;Lsun/util/locale/LocaleExtensions;
 HSPLsun/util/locale/InternalLocaleBuilder;->setExtensions(Ljava/util/List;Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder;+]Lsun/util/locale/InternalLocaleBuilder;Lsun/util/locale/InternalLocaleBuilder;]Ljava/lang/String;Ljava/lang/String;]Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/HashSet;]Ljava/util/Map;Ljava/util/HashMap;
 HSPLsun/util/locale/InternalLocaleBuilder;->setLanguage(Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder;
 HSPLsun/util/locale/InternalLocaleBuilder;->setLanguageTag(Lsun/util/locale/LanguageTag;)Lsun/util/locale/InternalLocaleBuilder;+]Lsun/util/locale/InternalLocaleBuilder;Lsun/util/locale/InternalLocaleBuilder;]Lsun/util/locale/LanguageTag;Lsun/util/locale/LanguageTag;]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
+HSPLsun/util/locale/InternalLocaleBuilder;->setRegion(Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder;
+HSPLsun/util/locale/InternalLocaleBuilder;->setScript(Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder;
+HSPLsun/util/locale/InternalLocaleBuilder;->setVariant(Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder;+]Ljava/lang/String;Ljava/lang/String;
 HSPLsun/util/locale/LanguageTag;-><init>()V
 HSPLsun/util/locale/LanguageTag;->canonicalizeLanguage(Ljava/lang/String;)Ljava/lang/String;
 HSPLsun/util/locale/LanguageTag;->canonicalizeRegion(Ljava/lang/String;)Ljava/lang/String;
@@ -8980,10 +9617,10 @@
 HSPLsun/util/locale/LanguageTag;->parseExtlangs(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus;
 HSPLsun/util/locale/LanguageTag;->parseLanguage(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus;
 HSPLsun/util/locale/LanguageTag;->parseLocale(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)Lsun/util/locale/LanguageTag;+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale;]Ljava/util/List;Ljava/util/ArrayList;]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lsun/util/locale/Extension;Lsun/util/locale/UnicodeLocaleExtension;]Lsun/util/locale/LocaleExtensions;Lsun/util/locale/LocaleExtensions;]Ljava/lang/Character;Ljava/lang/Character;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
-HSPLsun/util/locale/LanguageTag;->parsePrivateuse(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus;
+HSPLsun/util/locale/LanguageTag;->parsePrivateuse(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;
 HSPLsun/util/locale/LanguageTag;->parseRegion(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus;
 HSPLsun/util/locale/LanguageTag;->parseScript(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus;
-HSPLsun/util/locale/LanguageTag;->parseVariants(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus;
+HSPLsun/util/locale/LanguageTag;->parseVariants(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus;
 HSPLsun/util/locale/LocaleObjectCache$CacheEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
 HSPLsun/util/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object;
 HSPLsun/util/locale/LocaleObjectCache;->cleanStaleEntries()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue;
@@ -9017,6 +9654,11 @@
 HSPLsun/util/locale/StringTokenIterator;->next()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;
 HSPLsun/util/locale/StringTokenIterator;->nextDelimiter(I)I
 HSPLsun/util/locale/StringTokenIterator;->setStart(I)Lsun/util/locale/StringTokenIterator;+]Ljava/lang/String;Ljava/lang/String;
+HSPLsun/util/logging/LoggingSupport$2;-><init>()V
+HSPLsun/util/logging/LoggingSupport$2;->run()Ljava/lang/Object;
+HSPLsun/util/logging/LoggingSupport$2;->run()Ljava/lang/String;
+HSPLsun/util/logging/LoggingSupport;->getSimpleFormat()Ljava/lang/String;
+HSPLsun/util/logging/LoggingSupport;->getSimpleFormat(Z)Ljava/lang/String;
 HSPLsun/util/logging/PlatformLogger$JavaLoggerProxy;-><init>(Ljava/lang/String;)V
 HSPLsun/util/logging/PlatformLogger$JavaLoggerProxy;-><init>(Ljava/lang/String;Lsun/util/logging/PlatformLogger$Level;)V
 HSPLsun/util/logging/PlatformLogger$LoggerProxy;-><init>(Ljava/lang/String;)V
@@ -11561,3 +12203,183 @@
 Lsun/util/logging/PlatformLogger$Level;
 Lsun/util/logging/PlatformLogger$LoggerProxy;
 Lsun/util/logging/PlatformLogger;
+[B
+[C
+[D
+[F
+[I
+[J
+[Landroid/system/StructCapUserData;
+[Landroid/system/StructPollfd;
+[Lcom/android/okhttp/CipherSuite;
+[Lcom/android/okhttp/ConnectionSpec;
+[Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
+[Lcom/android/okhttp/Protocol;
+[Lcom/android/okhttp/TlsVersion;
+[Lcom/android/org/bouncycastle/asn1/ASN1Encodable;
+[Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;
+[Lcom/android/org/bouncycastle/crypto/params/DHParameters;
+[Lcom/android/org/bouncycastle/crypto/params/DSAParameters;
+[Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/x509/PEMUtil$Boundaries;
+[Lcom/android/org/kxml2/io/KXmlParser$ValueContext;
+[Ldalvik/system/DexPathList$Element;
+[Ldalvik/system/DexPathList$NativeLibraryElement;
+[Ljava/io/File$PathStatus;
+[Ljava/io/File;
+[Ljava/io/FileDescriptor;
+[Ljava/io/IOException;
+[Ljava/io/ObjectInputStream$HandleTable$HandleList;
+[Ljava/io/ObjectStreamField;
+[Ljava/lang/Byte;
+[Ljava/lang/CharSequence;
+[Ljava/lang/Character$UnicodeBlock;
+[Ljava/lang/Character;
+[Ljava/lang/Class;
+[Ljava/lang/ClassLoader;
+[Ljava/lang/Comparable;
+[Ljava/lang/Daemons$Daemon;
+[Ljava/lang/Enum;
+[Ljava/lang/Float;
+[Ljava/lang/Integer;
+[Ljava/lang/Long;
+[Ljava/lang/Object;
+[Ljava/lang/Package;
+[Ljava/lang/Runnable;
+[Ljava/lang/Short;
+[Ljava/lang/StackTraceElement;
+[Ljava/lang/String;
+[Ljava/lang/Thread$State;
+[Ljava/lang/Thread;
+[Ljava/lang/ThreadGroup;
+[Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
+[Ljava/lang/Throwable;
+[Ljava/lang/annotation/Annotation;
+[Ljava/lang/invoke/MethodHandle;
+[Ljava/lang/invoke/MethodType;
+[Ljava/lang/invoke/VarHandle$AccessMode;
+[Ljava/lang/invoke/VarHandle$AccessType;
+[Ljava/lang/ref/WeakReference;
+[Ljava/lang/reflect/AccessibleObject;
+[Ljava/lang/reflect/Constructor;
+[Ljava/lang/reflect/Field;
+[Ljava/lang/reflect/Method;
+[Ljava/lang/reflect/Parameter;
+[Ljava/lang/reflect/Type;
+[Ljava/lang/reflect/TypeVariable;
+[Ljava/math/BigDecimal;
+[Ljava/math/BigInteger;
+[Ljava/math/MathContext;
+[Ljava/math/RoundingMode;
+[Ljava/net/Authenticator$RequestorType;
+[Ljava/net/InetAddress;
+[Ljava/net/Proxy$Type;
+[Ljava/net/StandardProtocolFamily;
+[Ljava/nio/ByteBuffer;
+[Ljava/nio/file/AccessMode;
+[Ljava/nio/file/LinkOption;
+[Ljava/nio/file/StandardCopyOption;
+[Ljava/nio/file/StandardOpenOption;
+[Ljava/nio/file/attribute/FileAttribute;
+[Ljava/security/CryptoPrimitive;
+[Ljava/security/Principal;
+[Ljava/security/Provider;
+[Ljava/security/cert/CRLReason;
+[Ljava/security/cert/Certificate;
+[Ljava/security/cert/PKIXRevocationChecker$Option;
+[Ljava/security/cert/X509Certificate;
+[Ljava/text/DateFormat$Field;
+[Ljava/text/DateFormat;
+[Ljava/text/Normalizer$Form;
+[Ljava/time/DayOfWeek;
+[Ljava/time/LocalDateTime;
+[Ljava/time/LocalTime;
+[Ljava/time/Month;
+[Ljava/time/ZoneOffset;
+[Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;
+[Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
+[Ljava/time/format/ResolverStyle;
+[Ljava/time/format/SignStyle;
+[Ljava/time/format/TextStyle;
+[Ljava/time/temporal/ChronoField;
+[Ljava/time/temporal/ChronoUnit;
+[Ljava/time/temporal/IsoFields$Field;
+[Ljava/time/temporal/IsoFields$Unit;
+[Ljava/time/temporal/JulianFields$Field;
+[Ljava/time/temporal/TemporalUnit;
+[Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;
+[Ljava/time/zone/ZoneOffsetTransitionRule;
+[Ljava/util/ArrayList;
+[Ljava/util/Comparators$NaturalOrderComparator;
+[Ljava/util/Enumeration;
+[Ljava/util/Formatter$Flags;
+[Ljava/util/Formatter$FormatString;
+[Ljava/util/HashMap$Node;
+[Ljava/util/HashMap;
+[Ljava/util/Hashtable$HashtableEntry;
+[Ljava/util/List;
+[Ljava/util/Locale$Category;
+[Ljava/util/Locale$FilteringMode;
+[Ljava/util/Locale;
+[Ljava/util/Map$Entry;
+[Ljava/util/WeakHashMap$Entry;
+[Ljava/util/concurrent/ConcurrentHashMap$CounterCell;
+[Ljava/util/concurrent/ConcurrentHashMap$Node;
+[Ljava/util/concurrent/ConcurrentHashMap$Segment;
+[Ljava/util/concurrent/ForkJoinTask$ExceptionNode;
+[Ljava/util/concurrent/ForkJoinTask;
+[Ljava/util/concurrent/RunnableScheduledFuture;
+[Ljava/util/concurrent/TimeUnit;
+[Ljava/util/logging/Handler;
+[Ljava/util/prefs/AbstractPreferences;
+[Ljava/util/regex/Pattern;
+[Ljava/util/stream/Collector$Characteristics;
+[Ljava/util/stream/MatchOps$MatchKind;
+[Ljava/util/stream/StreamOpFlag$Type;
+[Ljava/util/stream/StreamOpFlag;
+[Ljava/util/stream/StreamShape;
+[Ljavax/crypto/Cipher$InitType;
+[Ljavax/crypto/Cipher$NeedToSet;
+[Ljavax/net/ssl/KeyManager;
+[Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
+[Ljavax/net/ssl/SSLEngineResult$Status;
+[Ljavax/net/ssl/TrustManager;
+[Ljavax/security/auth/x500/X500Principal;
+[Ljavax/security/cert/X509Certificate;
+[Llibcore/io/ClassPathURLStreamHandler;
+[Llibcore/io/IoTracker$Mode;
+[Llibcore/reflect/AnnotationMember$DefaultValues;
+[Llibcore/reflect/AnnotationMember;
+[Lorg/json/JSONStringer$Scope;
+[Lsun/invoke/util/Wrapper;
+[Lsun/misc/FDBigInteger;
+[Lsun/misc/FormattedFloatingDecimal$Form;
+[Lsun/security/jca/ProviderConfig;
+[Lsun/security/jca/ServiceId;
+[Lsun/security/pkcs/SignerInfo;
+[Lsun/security/provider/certpath/OCSP$RevocationStatus$CertStatus;
+[Lsun/security/provider/certpath/OCSPResponse$ResponseStatus;
+[Lsun/security/provider/certpath/RevocationChecker$Mode;
+[Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
+[Lsun/security/util/ObjectIdentifier;
+[Lsun/security/x509/AVA;
+[Lsun/security/x509/NetscapeCertTypeExtension$MapEntry;
+[Lsun/security/x509/RDN;
+[Lsun/util/calendar/Era;
+[Lsun/util/logging/PlatformLogger$Level;
+[S
+[Z
+[[B
+[[C
+[[F
+[[I
+[[J
+[[Ljava/lang/Byte;
+[[Ljava/lang/Class;
+[[Ljava/lang/Long;
+[[Ljava/lang/Object;
+[[Ljava/lang/String;
+[[Ljava/lang/annotation/Annotation;
+[[Ljava/math/BigInteger;
+[[S
+[[[B
+[[[I
diff --git a/build/sdk/Android.bp b/build/sdk/Android.bp
index 1817a31..33a98ff 100644
--- a/build/sdk/Android.bp
+++ b/build/sdk/Android.bp
@@ -122,10 +122,10 @@
 
             java_system_modules: [
                 "art-module-public-api-stubs-system-modules",
+                "art-module-lib-api-stubs-system-modules",
                 "art-module-intra-core-api-stubs-system-modules",
-                "legacy-art-module-platform-api-stubs-system-modules",
-                "stable-art-module-platform-api-stubs-system-modules",
                 "core-current-stubs-system-modules",
+                "core-module-lib-stubs-system-modules",
                 "legacy-core-platform-api-stubs-system-modules",
                 "stable-core-platform-api-stubs-system-modules",
             ],
diff --git a/cmdline/Android.bp b/cmdline/Android.bp
index 741722f..fdc762c 100644
--- a/cmdline/Android.bp
+++ b/cmdline/Android.bp
@@ -36,10 +36,26 @@
     min_sdk_version: "S",
 }
 
+art_cc_defaults {
+    name: "art_cmdline_tests_defaults",
+    srcs: ["cmdline_parser_test.cc"],
+}
+
+// Version of ART gtest `art_cmdline_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
 art_cc_test {
     name: "art_cmdline_tests",
     defaults: [
         "art_gtest_defaults",
+        "art_cmdline_tests_defaults",
     ],
-    srcs: ["cmdline_parser_test.cc"],
+}
+
+// Standalone version of ART gtest `art_cmdline_tests`, not bundled with the ART APEX on target.
+art_cc_test {
+    name: "art_standalone_cmdline_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_cmdline_tests_defaults",
+    ],
 }
diff --git a/compiler/Android.bp b/compiler/Android.bp
index cb47d77..6b74f77 100644
--- a/compiler/Android.bp
+++ b/compiler/Android.bp
@@ -326,26 +326,47 @@
     whole_static_libs: ["libartd-compiler"],
 }
 
-art_cc_library {
-    name: "libart-compiler-gtest",
-    defaults: ["libart-gtest-defaults"],
+// Properties common to `libart-compiler-gtest` and `libartd-compiler-gtest`.
+art_cc_defaults {
+    name: "libart-compiler-gtest-common",
     srcs: [
         "common_compiler_test.cc",
     ],
     shared_libs: [
-        "libartd-compiler",
-        "libartd-disassembler",
-        "libartbase-art-gtest",
-        "libart-runtime-gtest",
         "libbase",
     ],
 }
 
-art_cc_test {
-    name: "art_compiler_tests",
+art_cc_library {
+    name: "libart-compiler-gtest",
     defaults: [
-        "art_gtest_defaults",
+        "libart-gtest-defaults",
+        "libart-compiler-gtest-common",
     ],
+    shared_libs: [
+        "libart-compiler",
+        "libart-disassembler",
+        "libartbase-art-gtest",
+        "libart-runtime-gtest",
+    ],
+}
+
+art_cc_library {
+    name: "libartd-compiler-gtest",
+    defaults: [
+        "libartd-gtest-defaults",
+        "libart-compiler-gtest-common",
+    ],
+    shared_libs: [
+        "libartd-compiler",
+        "libartd-disassembler",
+        "libartbased-art-gtest",
+        "libartd-runtime-gtest",
+    ],
+}
+
+art_cc_defaults {
+    name: "art_compiler_tests_defaults",
     data: [
         ":art-gtest-jars-ExceptionHandle",
         ":art-gtest-jars-Interfaces",
@@ -436,16 +457,9 @@
     ],
 
     shared_libs: [
-        "libprofiled",
-        "libartd-compiler",
-        "libartd-simulator-container",
-
         "libbacktrace",
         "libnativeloader",
     ],
-    static_libs: [
-        "libvixld",
-    ],
 
     target: {
         host: {
@@ -456,6 +470,47 @@
     },
 }
 
+// Version of ART gtest `art_compiler_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_compiler_tests",
+    defaults: [
+        "art_gtest_defaults",
+        "art_compiler_tests_defaults",
+    ],
+    shared_libs: [
+        "libprofiled",
+        "libartd-compiler",
+        "libartd-simulator-container",
+    ],
+    static_libs: [
+        "libvixld",
+    ],
+}
+
+// Standalone version of ART gtest `art_compiler_tests`, not bundled with the ART APEX on target.
+art_cc_test {
+    name: "art_standalone_compiler_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_compiler_tests_defaults",
+    ],
+    shared_libs: [
+        "libprofile",
+        "libart-compiler",
+    ],
+    static_libs: [
+        // For now, link `libart-simulator-container` statically for simplicity,
+        // to save the added complexity to package it in test suites (along with
+        // other test artifacts) and install it on device during tests.
+        // TODO(b/192070541): Consider linking `libart-simulator-container`
+        // dynamically.
+        "libart-simulator-container",
+        "libvixl",
+    ],
+    test_config: "art_standalone_compiler_tests.xml",
+}
+
 art_cc_test {
     name: "art_compiler_host_tests",
     device_supported: false,
diff --git a/compiler/art_standalone_compiler_tests.xml b/compiler/art_standalone_compiler_tests.xml
new file mode 100644
index 0000000..4cf6e3d
--- /dev/null
+++ b/compiler/art_standalone_compiler_tests.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Runs art_standalone_compiler_tests.">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art_standalone_compiler_tests->/data/local/tmp/art_standalone_compiler_tests/art_standalone_compiler_tests" />
+        <option name="append-bitness" value="true" />
+    </target_preparer>
+
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art-gtest-jars-ExceptionHandle.jar->/data/local/tmp/art_standalone_compiler_tests/art-gtest-jars-ExceptionHandle.jar" />
+        <option name="push" value="art-gtest-jars-Interfaces.jar->/data/local/tmp/art_standalone_compiler_tests/art-gtest-jars-Interfaces.jar" />
+        <option name="push" value="art-gtest-jars-MyClassNatives.jar->/data/local/tmp/art_standalone_compiler_tests/art-gtest-jars-MyClassNatives.jar" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.GTest" >
+        <option name="native-test-device-path" value="/data/local/tmp/art_standalone_compiler_tests" />
+        <option name="module-name" value="art_standalone_compiler_tests" />
+        <option name="ld-library-path-32" value="/apex/com.android.art/lib" />
+        <option name="ld-library-path-64" value="/apex/com.android.art/lib64" />
+    </test>
+
+    <!-- When this test is run in a Mainline context (e.g. with `mts-tradefed`), only enable it if
+         one of the Mainline modules below is present on the device used for testing. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
+        <!-- ART Mainline Module (internal version). -->
+        <option name="mainline-module-package-name" value="com.google.android.art" />
+        <!-- ART Mainline Module (external (AOSP) version). -->
+        <option name="mainline-module-package-name" value="com.android.art" />
+    </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
+</configuration>
diff --git a/compiler/jit/jit_compiler.cc b/compiler/jit/jit_compiler.cc
index c5095cf..f819cd8 100644
--- a/compiler/jit/jit_compiler.cc
+++ b/compiler/jit/jit_compiler.cc
@@ -188,7 +188,7 @@
                                           : "Compiling baseline",
                                   &logger);
     JitCodeCache* const code_cache = runtime->GetJit()->GetCodeCache();
-    metrics::AutoTimer timer{runtime->GetMetrics()->JitMethodCompileTime()};
+    metrics::AutoTimer timer{runtime->GetMetrics()->JitMethodCompileTotalTime()};
     success = compiler_->JitCompile(
         self, code_cache, region, method, compilation_kind, jit_logger_.get());
     uint64_t duration_us = timer.Stop();
diff --git a/compiler/optimizing/execution_subgraph.cc b/compiler/optimizing/execution_subgraph.cc
index 6d10566..66fdfcd 100644
--- a/compiler/optimizing/execution_subgraph.cc
+++ b/compiler/optimizing/execution_subgraph.cc
@@ -86,12 +86,6 @@
     ScopedArenaVector<std::bitset<kMaxFilterableSuccessors>> results(
         graph_->GetBlocks().size(), temporaries.Adapter(kArenaAllocLSA));
     unreachable_blocks_.ClearAllBits();
-    // TODO We should support infinite loops as well.
-    if (UNLIKELY(graph_->GetExitBlock() == nullptr)) {
-      // Infinite loop
-      valid_ = false;
-      return;
-    }
     // Fills up the 'results' map with what we need to add to update
     // allowed_successors in order to prune sink nodes.
     bool start_reaches_end = false;
@@ -170,8 +164,11 @@
             << "current path size: " << current_path.size()
             << " cur_block id: " << cur_block->GetBlockId() << " entry id "
             << graph_->GetEntryBlock()->GetBlockId();
-        DCHECK(!visiting.IsBitSet(id))
-            << "Somehow ended up in a loop! This should have been caught before now! " << id;
+        if (visiting.IsBitSet(id)) {
+          // TODO We should support infinite loops as well.
+          start_reaches_end = false;
+          break;
+        }
         std::bitset<kMaxFilterableSuccessors>& result = results[id];
         if (cur_block == graph_->GetExitBlock()) {
           start_reaches_end = true;
diff --git a/compiler/optimizing/load_store_elimination.h b/compiler/optimizing/load_store_elimination.h
index e73ef5e..6ad2eb2 100644
--- a/compiler/optimizing/load_store_elimination.h
+++ b/compiler/optimizing/load_store_elimination.h
@@ -27,7 +27,7 @@
  public:
   // Whether or not we should attempt partial Load-store-elimination which
   // requires additional blocks and predicated instructions.
-  static constexpr bool kEnablePartialLSE = true;
+  static constexpr bool kEnablePartialLSE = false;
 
   // Controls whether to enable VLOG(compiler) logs explaining the transforms taking place.
   static constexpr bool kVerboseLoggingMode = false;
diff --git a/compiler/optimizing/ssa_liveness_analysis.h b/compiler/optimizing/ssa_liveness_analysis.h
index 3ea2815..7f31585 100644
--- a/compiler/optimizing/ssa_liveness_analysis.h
+++ b/compiler/optimizing/ssa_liveness_analysis.h
@@ -873,9 +873,9 @@
   }
 
   // Returns whether an interval, when it is non-split, is using
-  // the same register of one of its input.
+  // the same register of one of its input. This function should
+  // be used only for DCHECKs.
   bool IsUsingInputRegister() const {
-    CHECK(kIsDebugBuild) << "Function should be used only for DCHECKs";
     if (defined_by_ != nullptr && !IsSplit()) {
       for (const HInstruction* input : defined_by_->GetInputs()) {
         LiveInterval* interval = input->GetLiveInterval();
@@ -899,9 +899,9 @@
 
   // Returns whether an interval, when it is non-split, can safely use
   // the same register of one of its input. Note that this method requires
-  // IsUsingInputRegister() to be true.
+  // IsUsingInputRegister() to be true. This function should be used only
+  // for DCHECKs.
   bool CanUseInputRegister() const {
-    CHECK(kIsDebugBuild) << "Function should be used only for DCHECKs";
     DCHECK(IsUsingInputRegister());
     if (defined_by_ != nullptr && !IsSplit()) {
       LocationSummary* locations = defined_by_->GetLocations();
diff --git a/dex2oat/Android.bp b/dex2oat/Android.bp
index 77eed44..d377bbb 100644
--- a/dex2oat/Android.bp
+++ b/dex2oat/Android.bp
@@ -420,6 +420,26 @@
     shared_libs: [
         "libart-compiler-gtest",
         "libart-runtime-gtest",
+        "libart-compiler",
+        "libart-disassembler",
+        "libbase",
+        "liblz4", // libart-dex2oat dependency; must be repeated here since it's a static lib.
+        "liblog",
+    ],
+    static_libs: [
+        "libart-dex2oat",
+    ],
+}
+
+art_cc_library_static {
+    name: "libartd-dex2oat-gtest",
+    defaults: ["libartd-gtest-defaults"],
+    srcs: [
+        "common_compiler_driver_test.cc",
+    ],
+    shared_libs: [
+        "libartd-compiler-gtest",
+        "libartd-runtime-gtest",
         "libartd-compiler",
         "libartd-disassembler",
         "libbase",
@@ -431,11 +451,8 @@
     ],
 }
 
-art_cc_test {
-    name: "art_dex2oat_tests",
-    defaults: [
-        "art_gtest_defaults",
-    ],
+art_cc_defaults {
+    name: "art_dex2oat_tests_defaults",
     data: [
         ":art-gtest-jars-AbstractMethod",
         ":art-gtest-jars-DefaultMethods",
@@ -506,20 +523,54 @@
     },
 
     shared_libs: [
-        "libartbased",
-        "libartd-compiler",
-        "libartd-dexlayout",
         "libartpalette",
         "libbase",
         "libcrypto",
-        "liblz4", // libartd-dex2oat dependency; must be repeated here since it's a static lib.
+        "liblz4", // libart(d)-dex2oat dependency; must be repeated here since it's a static lib.
         "liblog",
-        "libprofiled",
         "libsigchain",
         "libziparchive",
     ],
+}
+
+// Version of ART gtest `art_dex2oat_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_dex2oat_tests",
+    defaults: [
+        "art_gtest_defaults",
+        "art_dex2oat_tests_defaults",
+    ],
+    shared_libs: [
+        "libartbased",
+        "libartd-compiler",
+        "libartd-dexlayout",
+        "libprofiled",
+    ],
+    static_libs: [
+        "libartd-dex2oat-gtest",
+        "libartd-dex2oat",
+        "libvixld",
+    ],
+}
+
+// Standalone version of ART gtest `art_dex2oat_tests`, not bundled with the ART APEX on target.
+art_cc_test {
+    name: "art_standalone_dex2oat_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_dex2oat_tests_defaults",
+    ],
+    shared_libs: [
+        "libartbase",
+        "libart-compiler",
+        "libart-dexlayout",
+        "libprofile",
+    ],
     static_libs: [
         "libart-dex2oat-gtest",
-        "libartd-dex2oat",
+        "libart-dex2oat",
+        "libvixl",
     ],
+    test_config: "art_standalone_dex2oat_tests.xml",
 }
diff --git a/dex2oat/art_standalone_dex2oat_tests.xml b/dex2oat/art_standalone_dex2oat_tests.xml
new file mode 100644
index 0000000..8f9689a
--- /dev/null
+++ b/dex2oat/art_standalone_dex2oat_tests.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Runs art_standalone_dex2oat_tests.">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art_standalone_dex2oat_tests->/data/local/tmp/art_standalone_dex2oat_tests/art_standalone_dex2oat_tests" />
+        <option name="append-bitness" value="true" />
+    </target_preparer>
+
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art-gtest-jars-AbstractMethod.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-AbstractMethod.jar" />
+        <option name="push" value="art-gtest-jars-DefaultMethods.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-DefaultMethods.jar" />
+        <option name="push" value="art-gtest-jars-DexToDexDecompiler.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-DexToDexDecompiler.jar" />
+        <option name="push" value="art-gtest-jars-Dex2oatVdexPublicSdkDex.dex->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-Dex2oatVdexPublicSdkDex.dex" />
+        <option name="push" value="art-gtest-jars-Dex2oatVdexTestDex.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-Dex2oatVdexTestDex.jar" />
+        <option name="push" value="art-gtest-jars-ImageLayoutA.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-ImageLayoutA.jar" />
+        <option name="push" value="art-gtest-jars-ImageLayoutB.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-ImageLayoutB.jar" />
+        <option name="push" value="art-gtest-jars-LinkageTest.dex->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-LinkageTest.dex" />
+        <option name="push" value="art-gtest-jars-Main.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-Main.jar" />
+        <option name="push" value="art-gtest-jars-MainEmptyUncompressed.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-MainEmptyUncompressed.jar" />
+        <option name="push" value="art-gtest-jars-MainEmptyUncompressedAligned.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-MainEmptyUncompressedAligned.jar" />
+        <option name="push" value="art-gtest-jars-MainStripped.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-MainStripped.jar" />
+        <option name="push" value="art-gtest-jars-MainUncompressedAligned.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-MainUncompressedAligned.jar" />
+        <option name="push" value="art-gtest-jars-ManyMethods.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-ManyMethods.jar" />
+        <option name="push" value="art-gtest-jars-MultiDex.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-MultiDex.jar" />
+        <option name="push" value="art-gtest-jars-MultiDexModifiedSecondary.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-MultiDexModifiedSecondary.jar" />
+        <option name="push" value="art-gtest-jars-MyClassNatives.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-MyClassNatives.jar" />
+        <option name="push" value="art-gtest-jars-Nested.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-Nested.jar" />
+        <option name="push" value="art-gtest-jars-ProfileTestMultiDex.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-ProfileTestMultiDex.jar" />
+        <option name="push" value="art-gtest-jars-StaticLeafMethods.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-StaticLeafMethods.jar" />
+        <option name="push" value="art-gtest-jars-Statics.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-Statics.jar" />
+        <option name="push" value="art-gtest-jars-StringLiterals.jar->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-StringLiterals.jar" />
+        <option name="push" value="art-gtest-jars-VerifierDeps.dex->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-VerifierDeps.dex" />
+        <option name="push" value="art-gtest-jars-VerifierDepsMulti.dex->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-VerifierDepsMulti.dex" />
+        <option name="push" value="art-gtest-jars-VerifySoftFailDuringClinit.dex->/data/local/tmp/art_standalone_dex2oat_tests/art-gtest-jars-VerifySoftFailDuringClinit.dex" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.GTest" >
+        <option name="native-test-device-path" value="/data/local/tmp/art_standalone_dex2oat_tests" />
+        <option name="module-name" value="art_standalone_dex2oat_tests" />
+        <option name="ld-library-path-32" value="/apex/com.android.art/lib" />
+        <option name="ld-library-path-64" value="/apex/com.android.art/lib64" />
+    </test>
+
+    <!-- When this test is run in a Mainline context (e.g. with `mts-tradefed`), only enable it if
+         one of the Mainline modules below is present on the device used for testing. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
+        <!-- ART Mainline Module (internal version). -->
+        <option name="mainline-module-package-name" value="com.google.android.art" />
+        <!-- ART Mainline Module (external (AOSP) version). -->
+        <option name="mainline-module-package-name" value="com.android.art" />
+    </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
+</configuration>
diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc
index 9c9aeea..84e4622 100644
--- a/dex2oat/dex2oat.cc
+++ b/dex2oat/dex2oat.cc
@@ -718,7 +718,8 @@
 
     if (!IsBootImage() && boot_image_filename_.empty()) {
       DCHECK(!IsBootImageExtension());
-      boot_image_filename_ = GetDefaultBootImageLocation(android_root_);
+      boot_image_filename_ =
+          GetDefaultBootImageLocation(android_root_, /*deny_art_apex_data_files=*/false);
     }
 
     if (dex_filenames_.empty() && zip_fd_ == -1) {
diff --git a/dexdump/Android.bp b/dexdump/Android.bp
index 0115b38..31faa34 100644
--- a/dexdump/Android.bp
+++ b/dexdump/Android.bp
@@ -71,11 +71,8 @@
     ],
 }
 
-art_cc_test {
-    name: "art_dexdump_tests",
-    defaults: [
-        "art_gtest_defaults",
-    ],
+art_cc_defaults {
+    name: "art_dexdump_tests_defaults",
     srcs: ["dexdump_test.cc"],
     target: {
         host: {
@@ -83,3 +80,22 @@
         },
     },
 }
+
+// Version of ART gtest `art_dexdump_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_dexdump_tests",
+    defaults: [
+        "art_gtest_defaults",
+        "art_dexdump_tests_defaults",
+    ],
+}
+
+// Standalone version of ART gtest `art_dexdump_tests`, not bundled with the ART APEX on target.
+art_cc_test {
+    name: "art_standalone_dexdump_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_dexdump_tests_defaults",
+    ],
+}
diff --git a/dexlist/Android.bp b/dexlist/Android.bp
index ae743e9..1e69bdc 100644
--- a/dexlist/Android.bp
+++ b/dexlist/Android.bp
@@ -57,11 +57,8 @@
     },
 }
 
-art_cc_test {
-    name: "art_dexlist_tests",
-    defaults: [
-        "art_gtest_defaults",
-    ],
+art_cc_defaults {
+    name: "art_dexlist_tests_defaults",
     srcs: ["dexlist_test.cc"],
     target: {
         host: {
@@ -69,3 +66,22 @@
         },
     },
 }
+
+// Version of ART gtest `art_dexlist_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_dexlist_tests",
+    defaults: [
+        "art_gtest_defaults",
+        "art_dexlist_tests_defaults",
+    ],
+}
+
+// Standalone version of ART gtest `art_dexlist_tests`, not bundled with the ART APEX on target.
+art_cc_test {
+    name: "art_standalone_dexlist_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_dexlist_tests_defaults",
+    ],
+}
diff --git a/dexoptanalyzer/Android.bp b/dexoptanalyzer/Android.bp
index 02c385a..a66bd29 100644
--- a/dexoptanalyzer/Android.bp
+++ b/dexoptanalyzer/Android.bp
@@ -33,8 +33,7 @@
 
     target: {
         android: {
-            // Use the 32-bit version of dexoptanalyzer on devices.
-            compile_multilib: "prefer32",
+            compile_multilib: "first",
         },
     },
 
@@ -82,11 +81,8 @@
     ],
 }
 
-art_cc_test {
-    name: "art_dexoptanalyzer_tests",
-    defaults: [
-        "art_gtest_defaults",
-    ],
+art_cc_defaults {
+    name: "art_dexoptanalyzer_tests_defaults",
     shared_libs: [
         "libbacktrace",
     ],
@@ -111,3 +107,24 @@
         },
     },
 }
+
+// Version of ART gtest `art_dexoptanalyzer_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_dexoptanalyzer_tests",
+    defaults: [
+        "art_gtest_defaults",
+        "art_dexoptanalyzer_tests_defaults",
+    ],
+}
+
+// Standalone version of ART gtest `art_dexoptanalyzer_tests`, not bundled with the ART APEX on
+// target.
+art_cc_test {
+    name: "art_standalone_dexoptanalyzer_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_dexoptanalyzer_tests_defaults",
+    ],
+    test_config_template: "art_standalone_dexoptanalyzer_tests.xml",
+}
diff --git a/dexoptanalyzer/art_standalone_dexoptanalyzer_tests.xml b/dexoptanalyzer/art_standalone_dexoptanalyzer_tests.xml
new file mode 100644
index 0000000..62cfcd2
--- /dev/null
+++ b/dexoptanalyzer/art_standalone_dexoptanalyzer_tests.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Runs art_standalone_dexoptanalyzer_tests (as root).">
+    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
+
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art_standalone_dexoptanalyzer_tests->/data/local/tmp/art_standalone_dexoptanalyzer_tests/art_standalone_dexoptanalyzer_tests" />
+        <option name="append-bitness" value="true" />
+    </target_preparer>
+
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art-gtest-jars-LinkageTest.dex->/data/local/tmp/art_standalone_dexoptanalyzer_tests/art-gtest-jars-LinkageTest.dex" />
+        <option name="push" value="art-gtest-jars-Main.jar->/data/local/tmp/art_standalone_dexoptanalyzer_tests/art-gtest-jars-Main.jar" />
+        <option name="push" value="art-gtest-jars-MainStripped.jar->/data/local/tmp/art_standalone_dexoptanalyzer_tests/art-gtest-jars-MainStripped.jar" />
+        <option name="push" value="art-gtest-jars-MultiDex.jar->/data/local/tmp/art_standalone_dexoptanalyzer_tests/art-gtest-jars-MultiDex.jar" />
+        <option name="push" value="art-gtest-jars-MultiDexModifiedSecondary.jar->/data/local/tmp/art_standalone_dexoptanalyzer_tests/art-gtest-jars-MultiDexModifiedSecondary.jar" />
+        <option name="push" value="art-gtest-jars-MyClassNatives.jar->/data/local/tmp/art_standalone_dexoptanalyzer_tests/art-gtest-jars-MyClassNatives.jar" />
+        <option name="push" value="art-gtest-jars-Nested.jar->/data/local/tmp/art_standalone_dexoptanalyzer_tests/art-gtest-jars-Nested.jar" />
+        <option name="push" value="art-gtest-jars-VerifierDeps.dex->/data/local/tmp/art_standalone_dexoptanalyzer_tests/art-gtest-jars-VerifierDeps.dex" />
+        <option name="push" value="art-gtest-jars-VerifierDepsMulti.dex->/data/local/tmp/art_standalone_dexoptanalyzer_tests/art-gtest-jars-VerifierDepsMulti.dex" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.GTest" >
+        <option name="native-test-device-path" value="/data/local/tmp/art_standalone_dexoptanalyzer_tests" />
+        <option name="module-name" value="art_standalone_dexoptanalyzer_tests" />
+        <option name="ld-library-path-32" value="/apex/com.android.art/lib" />
+        <option name="ld-library-path-64" value="/apex/com.android.art/lib64" />
+    </test>
+
+    <!-- When this test is run in a Mainline context (e.g. with `mts-tradefed`), only enable it if
+         one of the Mainline modules below is present on the device used for testing. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
+        <!-- ART Mainline Module (internal version). -->
+        <option name="mainline-module-package-name" value="com.google.android.art" />
+        <!-- ART Mainline Module (external (AOSP) version). -->
+        <option name="mainline-module-package-name" value="com.android.art" />
+    </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
+</configuration>
diff --git a/libartbase/Android.bp b/libartbase/Android.bp
index 9dcba99..8bd3bd1 100644
--- a/libartbase/Android.bp
+++ b/libartbase/Android.bp
@@ -221,15 +221,12 @@
     },
 }
 
-art_cc_library {
-    name: "libartbase-art-gtest",
-    defaults: ["libart-gtest-defaults"],
+art_cc_defaults {
+    name: "libartbase-art-gtest-defaults",
     srcs: [
         "base/common_art_test.cc",
     ],
     shared_libs: [
-        "libartbased",
-        "libdexfiled",
         "libbase",
         "libbacktrace",
     ],
@@ -244,11 +241,32 @@
     },
 }
 
-art_cc_test {
-    name: "art_libartbase_tests",
+art_cc_library {
+    name: "libartbase-art-gtest",
     defaults: [
-        "art_gtest_defaults",
+        "libart-gtest-defaults",
+        "libartbase-art-gtest-defaults",
     ],
+    shared_libs: [
+        "libartbase",
+        "libdexfile",
+    ],
+}
+
+art_cc_library {
+    name: "libartbased-art-gtest",
+    defaults: [
+        "libartd-gtest-defaults",
+        "libartbase-art-gtest-defaults",
+    ],
+    shared_libs: [
+        "libartbased",
+        "libdexfiled",
+    ],
+}
+
+art_cc_defaults {
+    name: "art_libartbase_tests_defaults",
     srcs: [
         "arch/instruction_set_test.cc",
         "base/arena_allocator_test.cc",
@@ -288,6 +306,28 @@
     shared_libs: [
         "libbase",
     ],
+    static_libs: [
+        "libgmock",
+    ],
+}
+
+// Version of ART gtest `art_libartbase_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_libartbase_tests",
+    defaults: [
+        "art_gtest_defaults",
+        "art_libartbase_tests_defaults",
+    ],
+}
+
+// Standalone version of ART gtest `art_libartbase_tests`, not bundled with the ART APEX on target.
+art_cc_test {
+    name: "art_standalone_libartbase_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_libartbase_tests_defaults",
+    ],
 }
 
 cc_library_headers {
diff --git a/libartbase/base/common_art_test.cc b/libartbase/base/common_art_test.cc
index 698ff87..843f286 100644
--- a/libartbase/base/common_art_test.cc
+++ b/libartbase/base/common_art_test.cc
@@ -277,7 +277,6 @@
 }
 
 void CommonArtTestImpl::SetUpAndroidDataDir(std::string& android_data) {
-  // On target, Cannot use /mnt/sdcard because it is mounted noexec, so use subdir of dalvik-cache
   if (IsHost()) {
     const char* tmpdir = getenv("TMPDIR");
     if (tmpdir != nullptr && tmpdir[0] != 0) {
@@ -286,7 +285,11 @@
       android_data = "/tmp";
     }
   } else {
-    android_data = "/data/dalvik-cache";
+    // On target, we cannot use `/mnt/sdcard` because it is mounted `noexec`,
+    // nor `/data/dalvik-cache` as it is not accessible on `user` builds.
+    // Instead, use `/data/local/tmp`, which does not require any special
+    // permission.
+    android_data = "/data/local/tmp";
   }
   android_data += "/art-data-XXXXXX";
   if (mkdtemp(&android_data[0]) == nullptr) {
@@ -319,10 +322,12 @@
   mkdir_result = mkdir(dalvik_cache_.c_str(), 0700);
   ASSERT_EQ(mkdir_result, 0);
 
-  static bool gSlowDebugTestFlag = false;
-  RegisterRuntimeDebugFlag(&gSlowDebugTestFlag);
-  SetRuntimeDebugFlagsEnabled(true);
-  CHECK(gSlowDebugTestFlag);
+  if (kIsDebugBuild) {
+    static bool gSlowDebugTestFlag = false;
+    RegisterRuntimeDebugFlag(&gSlowDebugTestFlag);
+    SetRuntimeDebugFlagsEnabled(true);
+    CHECK(gSlowDebugTestFlag);
+  }
 }
 
 void CommonArtTestImpl::TearDownAndroidDataDir(const std::string& android_data,
diff --git a/libartbase/base/file_utils.cc b/libartbase/base/file_utils.cc
index 45c3e3e..cb0023e 100644
--- a/libartbase/base/file_utils.cc
+++ b/libartbase/base/file_utils.cc
@@ -313,7 +313,8 @@
   return kDefaultBcpExtensionJar;
 }
 
-std::string GetDefaultBootImageLocation(const std::string& android_root) {
+std::string GetDefaultBootImageLocation(const std::string& android_root,
+                                        bool deny_art_apex_data_files) {
   constexpr static const char* kJavalibBootArt = "javalib/boot.art";
   constexpr static const char* kEtcBootImageProf = "etc/boot-image.prof";
 
@@ -321,9 +322,9 @@
   //  - the primary boot image in the ART APEX (contains the Core Libraries)
   //  - the boot image extensions (contains framework libraries) on the system partition, or
   //    in the ART APEX data directory, if an update for the ART module has been been installed.
-  if (kIsTargetBuild) {
+  if (kIsTargetBuild && !deny_art_apex_data_files) {
     // If the ART APEX has been updated, the compiled boot image extension will be in the ART APEX
-    // data directory (assuming there is space). Otherwise, for a factory installed ART APEX it is
+    // data directory (assuming there is space and we trust the artifacts there). Otherwise, for a factory installed ART APEX it is
     // under $ANDROID_ROOT/framework/.
     const std::string first_extension_jar{GetFirstBootClasspathExtensionJar(android_root)};
     const std::string boot_extension_image = GetApexDataBootImage(first_extension_jar);
@@ -354,7 +355,7 @@
   if (android_root.empty()) {
     return "";
   }
-  return GetDefaultBootImageLocation(android_root);
+  return GetDefaultBootImageLocation(android_root, /*deny_art_apex_data_files=*/false);
 }
 
 static std::string GetDalvikCacheDirectory(std::string_view root_directory,
@@ -624,8 +625,11 @@
 #endif
 }
 
-bool LocationIsTrusted(const std::string& location) {
-  return LocationIsOnSystem(location) || LocationIsOnArtApexData(location);
+bool LocationIsTrusted(const std::string& location, bool trust_art_apex_data_files) {
+  if (LocationIsOnSystem(location)) {
+    return true;
+  }
+  return LocationIsOnArtApexData(location) & trust_art_apex_data_files;
 }
 
 bool ArtModuleRootDistinctFromAndroidRoot() {
diff --git a/libartbase/base/file_utils.h b/libartbase/base/file_utils.h
index 6af82ef..c1b0095 100644
--- a/libartbase/base/file_utils.h
+++ b/libartbase/base/file_utils.h
@@ -74,7 +74,8 @@
 std::string GetDefaultBootImageLocation(std::string* error_msg);
 
 // Returns the default boot image location, based on the passed `android_root`.
-std::string GetDefaultBootImageLocation(const std::string& android_root);
+std::string GetDefaultBootImageLocation(const std::string& android_root,
+                                        bool deny_art_apex_data_files);
 
 // Return true if we found the dalvik cache and stored it in the dalvik_cache argument.
 // `have_android_data` will be set to true if we have an ANDROID_DATA that exists,
@@ -152,7 +153,7 @@
 // Returns whether the location is trusted for loading oat files. Trusted locations are protected
 // by dm-verity or fs-verity. The recognized locations are on /system or
 // /data/misc/apexdata/com.android.art.
-bool LocationIsTrusted(const std::string& location);
+bool LocationIsTrusted(const std::string& location, bool trust_art_apex_data_files);
 
 // Compare the ART module root against android root. Returns true if they are
 // both known and distinct. This is meant to be a proxy for 'running with apex'.
diff --git a/libartbase/base/flags.cc b/libartbase/base/flags.cc
index aaa7661..6cf9ef1 100644
--- a/libartbase/base/flags.cc
+++ b/libartbase/base/flags.cc
@@ -35,28 +35,41 @@
 // The various ParseValue functions store the parsed value into *destination. If parsing fails for
 // some reason, ParseValue makes no changes to *destination.
 
-void ParseValue(const std::string_view value, std::optional<bool>* destination) {
+bool ParseValue(const std::string_view value, std::optional<bool>* destination) {
   switch (::android::base::ParseBool(value)) {
     case ::android::base::ParseBoolResult::kError:
-      return;
+      return false;
     case ::android::base::ParseBoolResult::kTrue:
       *destination = true;
-      return;
+      return true;
     case ::android::base::ParseBoolResult::kFalse:
       *destination = false;
-      return;
+      return true;
   }
 }
 
-void ParseValue(const std::string_view value, std::optional<int>* destination) {
-  int parsed_value = 0;
+bool ParseValue(const std::string_view value, std::optional<int32_t>* destination) {
+  int32_t parsed_value = 0;
   if (::android::base::ParseInt(std::string{value}, &parsed_value)) {
     *destination = parsed_value;
+    return true;
   }
+  return false;
 }
 
-void ParseValue(const std::string_view value, std::optional<std::string>* destination) {
+bool ParseValue(const std::string_view value,
+                std::optional<uint32_t>* destination) {
+  uint32_t parsed_value = 0;
+  if (::android::base::ParseUint(std::string{value}, &parsed_value)) {
+    *destination = parsed_value;
+    return true;
+  }
+  return false;
+}
+
+bool ParseValue(const std::string_view value, std::optional<std::string>* destination) {
   *destination = value;
+  return true;
 }
 
 }  // namespace
@@ -112,7 +125,9 @@
   from_system_property_ = std::nullopt;
   const std::string sysprop = ::android::base::GetProperty(system_property_name_, kUndefinedValue);
   if (sysprop != kUndefinedValue) {
-    ParseValue(sysprop, &from_system_property_);
+    if (!ParseValue(sysprop, &from_system_property_)) {
+      LOG(ERROR) << "Failed to parse " << system_property_name_ << "=" << sysprop;
+    }
   }
 
   // Load the server-side configuration.
@@ -120,7 +135,9 @@
   const std::string server_config =
       ::android::base::GetProperty(server_setting_name_, kUndefinedValue);
   if (server_config != kUndefinedValue) {
-    ParseValue(server_config, &from_server_setting_);
+    if (!ParseValue(server_config, &from_server_setting_)) {
+      LOG(ERROR) << "Failed to parse " << server_setting_name_ << "=" << server_config;
+    }
   }
 }
 
diff --git a/libartbase/base/flags.h b/libartbase/base/flags.h
index e71bb4a..d1e1ca6 100644
--- a/libartbase/base/flags.h
+++ b/libartbase/base/flags.h
@@ -138,7 +138,7 @@
   FlagType type_;
 };
 
-using FlagBase = FlagMetaBase<bool, int, std::string>;
+using FlagBase = FlagMetaBase<bool, int32_t, uint32_t, std::string>;
 
 template <>
 std::forward_list<FlagBase*> FlagBase::ALL_FLAGS;
@@ -256,13 +256,54 @@
 struct Flags {
   // Flag used to test the infra.
   // TODO: can be removed once we add real flags.
-  Flag<int> MyFeatureTestFlag{"my-feature-test.flag", 42, FlagType::kDeviceConfig};
+  Flag<int32_t> MyFeatureTestFlag{"my-feature-test.flag", 42, FlagType::kDeviceConfig};
+
 
   // Metric infra flags.
-  Flag<bool> WriteMetricsToStatsd{ "metrics.write-to-statsd", false, FlagType::kDeviceConfig};
-  Flag<bool> WriteMetricsToLogcat{ "metrics.write-to-logcat", false, FlagType::kCmdlineOnly};
-  Flag<int> MetricsReportingPeriod{"metrics.reporting-period", 0, FlagType::kCmdlineOnly};
-  Flag<std::string> WriteMetricsToFile{"metrics.write-to-file", "", FlagType::kCmdlineOnly};
+
+  // The reporting spec for regular apps. An example of valid value is "S,1,2,4,*".
+  // See metrics::ReportingPeriodSpec for complete docs.
+  Flag<std::string> MetricsReportingSpec{"metrics.reporting-spec", "", FlagType::kDeviceConfig};
+
+  // The reporting spec for the system server. See MetricsReportingSpec as well.
+  Flag<std::string> MetricsReportingSpecSystemServer{"metrics.reporting-spec-server", "",
+      FlagType::kDeviceConfig};
+
+  // The mods that should report metrics. Together with MetricsReportingNumMods, they
+  // dictate what percentage of the runtime execution will report metrics.
+  // If the `session_id (a random number) % MetricsReportingNumMods < MetricsReportingMods`
+  // then the runtime session will report metrics.
+  //
+  // By default, the mods are 0, which means the reporting is disabled.
+  Flag<uint32_t> MetricsReportingMods{"metrics.reporting-mods", 0,
+      FlagType::kDeviceConfig};
+  Flag<uint32_t> MetricsReportingModsServer{"metrics.reporting-mods-server", 0,
+      FlagType::kDeviceConfig};
+
+  // See MetricsReportingMods docs.
+  //
+  // By default the number of mods is 100, so MetricsReportingMods will naturally
+  // read as the percent of runtime sessions that will report metrics. If a finer
+  // grain unit is needed (e.g. a tenth of a percent), the num-mods can be increased.
+  Flag<uint32_t> MetricsReportingNumMods{"metrics.reporting-num-mods", 100,
+      FlagType::kDeviceConfig};
+  Flag<uint32_t> MetricsReportingNumModsServer{"metrics.reporting-num-mods-server", 100,
+      FlagType::kDeviceConfig};
+
+  // Whether or not we should write metrics to statsd.
+  // Note that the actual write is still controlled by
+  // MetricsReportingMods and MetricsReportingNumMods.
+  Flag<bool> MetricsWriteToStatsd{ "metrics.write-to-statsd", false, FlagType::kDeviceConfig};
+
+  // Whether or not we should write metrics to logcat.
+  // Note that the actual write is still controlled by
+  // MetricsReportingMods and MetricsReportingNumMods.
+  Flag<bool> MetricsWriteToLogcat{ "metrics.write-to-logcat", false, FlagType::kCmdlineOnly};
+
+  // Whether or not we should write metrics to a file.
+  // Note that the actual write is still controlled by
+  // MetricsReportingMods and MetricsReportingNumMods.
+  Flag<std::string> MetricsWriteToFile{"metrics.write-to-file", "", FlagType::kCmdlineOnly};
 };
 
 // This is the actual instance of all the flags.
diff --git a/libartbase/base/hiddenapi_flags.h b/libartbase/base/hiddenapi_flags.h
index 375bf88..3ece966 100644
--- a/libartbase/base/hiddenapi_flags.h
+++ b/libartbase/base/hiddenapi_flags.h
@@ -254,9 +254,26 @@
     return true;
   }
 
+  // Clamp a max-target-* up to the given maxSdk; if the given api list is higher than
+  // maxSdk, return unsupported instead.
+  static std::string CoerceAtMost(const std::string& name, const std::string& maxSdk) {
+    const auto apiListToClamp = FromName(name);
+    // If the api list is a domain instead, return it unmodified.
+    if (!apiListToClamp.IsValid()) {
+      return name;
+    }
+    const auto maxApiList = FromName(maxSdk);
+    CHECK(maxApiList.IsValid()) << "invalid api list name " << maxSdk;
+    if (apiListToClamp > maxApiList) {
+      return kValueNames[Unsupported().GetIntValue()];
+    }
+    return name;
+  }
+
   bool operator==(const ApiList& other) const { return dex_flags_ == other.dex_flags_; }
   bool operator!=(const ApiList& other) const { return !(*this == other); }
   bool operator<(const ApiList& other) const { return dex_flags_ < other.dex_flags_; }
+  bool operator>(const ApiList& other) const { return dex_flags_ > other.dex_flags_; }
 
   // Returns true if combining this ApiList with `other` will succeed.
   bool CanCombineWith(const ApiList& other) const {
diff --git a/libartbase/base/logging_test.cc b/libartbase/base/logging_test.cc
index 46ba41b..540b9a7 100644
--- a/libartbase/base/logging_test.cc
+++ b/libartbase/base/logging_test.cc
@@ -39,10 +39,6 @@
   }
 };
 
-#ifdef NDEBUG
-#error Unexpected NDEBUG
-#endif
-
 class TestClass {
  public:
   DECLARE_RUNTIME_DEBUG_FLAG(kFlag);
@@ -51,7 +47,12 @@
 
 TEST_F(LoggingTest, DECL_DEF) {
   SetRuntimeDebugFlagsEnabled(true);
-  EXPECT_TRUE(TestClass::kFlag);
+  if (kIsDebugBuild) {
+    EXPECT_TRUE(TestClass::kFlag);
+  } else {
+    // Runtime debug flags have a constant `false` value on non-debug builds.
+    EXPECT_FALSE(TestClass::kFlag);
+  }
 
   SetRuntimeDebugFlagsEnabled(false);
   EXPECT_FALSE(TestClass::kFlag);
diff --git a/libartbase/base/memfd.h b/libartbase/base/memfd.h
index 0bb336d..3c27dcb 100644
--- a/libartbase/base/memfd.h
+++ b/libartbase/base/memfd.h
@@ -53,6 +53,10 @@
 # define F_SEAL_FUTURE_WRITE  0x0010
 #endif
 
+#ifndef MFD_CLOEXEC
+# define MFD_CLOEXEC    0x0001U
+#endif
+
 #ifndef MFD_ALLOW_SEALING
 # define MFD_ALLOW_SEALING    0x0002U
 #endif
diff --git a/libartbase/base/metrics/metrics.h b/libartbase/base/metrics/metrics.h
index 72d8365..17fb0d8 100644
--- a/libartbase/base/metrics/metrics.h
+++ b/libartbase/base/metrics/metrics.h
@@ -29,28 +29,33 @@
 
 #include "android-base/logging.h"
 #include "base/bit_utils.h"
-#include "base/compiler_filter.h"
 #include "base/time_utils.h"
 
 #pragma clang diagnostic push
 #pragma clang diagnostic error "-Wconversion"
 
 // See README.md in this directory for how to define metrics.
-#define ART_METRICS(METRIC)                                        \
-  METRIC(ClassLoadingTotalTime, MetricsCounter)                    \
-  METRIC(ClassVerificationTotalTime, MetricsCounter)               \
-  METRIC(ClassVerificationCount, MetricsCounter)                   \
-  METRIC(MutatorPauseTimeDuringGC, MetricsCounter)                 \
-  METRIC(YoungGcCount, MetricsCounter)                             \
-  METRIC(FullGcCount, MetricsCounter)                              \
-  METRIC(TotalBytesAllocated, MetricsCounter)                      \
-  METRIC(TotalGcMetaDataSize, MetricsCounter)                      \
-  METRIC(JitMethodCompileTime, MetricsHistogram, 15, 0, 1'000'000) \
-  METRIC(JitMethodCompileCount, MetricsCounter)                    \
-  METRIC(YoungGcCollectionTime, MetricsHistogram, 15, 0, 60'000)   \
-  METRIC(FullGcCollectionTime, MetricsHistogram, 15, 0, 60'000)    \
-  METRIC(YoungGcThroughput, MetricsHistogram, 15, 0, 1'000)        \
-  METRIC(FullGcThroughput, MetricsHistogram, 15, 0, 1'000)
+#define ART_METRICS(METRIC)                                             \
+  METRIC(ClassLoadingTotalTime, MetricsCounter)                         \
+  METRIC(ClassVerificationTotalTime, MetricsCounter)                    \
+  METRIC(ClassVerificationCount, MetricsCounter)                        \
+  METRIC(WorldStopTimeDuringGCAvg, MetricsAverage)                      \
+  METRIC(YoungGcCount, MetricsCounter)                                  \
+  METRIC(FullGcCount, MetricsCounter)                                   \
+  METRIC(TotalBytesAllocated, MetricsCounter)                           \
+  METRIC(TotalGcCollectionTime, MetricsCounter)                         \
+  METRIC(YoungGcThroughputAvg, MetricsAverage)                          \
+  METRIC(FullGcThroughputAvg, MetricsAverage)                           \
+  METRIC(YoungGcTracingThroughputAvg, MetricsAverage)                   \
+  METRIC(FullGcTracingThroughputAvg, MetricsAverage)                    \
+  METRIC(JitMethodCompileTotalTime, MetricsCounter)                     \
+  METRIC(JitMethodCompileCount, MetricsCounter)                         \
+  METRIC(YoungGcCollectionTime, MetricsHistogram, 15, 0, 60'000)        \
+  METRIC(FullGcCollectionTime, MetricsHistogram, 15, 0, 60'000)         \
+  METRIC(YoungGcThroughput, MetricsHistogram, 15, 0, 10'000)            \
+  METRIC(FullGcThroughput, MetricsHistogram, 15, 0, 10'000)             \
+  METRIC(YoungGcTracingThroughput, MetricsHistogram, 15, 0, 10'000)     \
+  METRIC(FullGcTracingThroughput, MetricsHistogram, 15, 0, 10'000)
 
 // A lot of the metrics implementation code is generated by passing one-off macros into ART_COUNTERS
 // and ART_HISTOGRAMS. This means metrics.h and metrics.cc are very #define-heavy, which can be
@@ -76,127 +81,96 @@
 #undef METRIC
 };
 
+// Names come from PackageManagerServiceCompilerMapping.java
+#define REASON_NAME_LIST(V) \
+  V(kError, "error") \
+  V(kUnknown, "unknown") \
+  V(kFirstBoot, "first-boot") \
+  V(kBootAfterOTA, "boot-after-ota") \
+  V(kPostBoot, "post-boot") \
+  V(kInstall, "install") \
+  V(kInstallFast, "install-fast") \
+  V(kInstallBulk, "install-bulk") \
+  V(kInstallBulkSecondary, "install-bulk-secondary") \
+  V(kInstallBulkDowngraded, "install-bulk-downgraded") \
+  V(kInstallBulkSecondaryDowngraded, "install-bulk-secondary-downgraded") \
+  V(kBgDexopt, "bg-dexopt") \
+  V(kABOTA, "ab-ota") \
+  V(kInactive, "inactive") \
+  V(kShared, "shared") \
+  V(kInstallWithDexMetadata, "install-with-dex-metadata") \
+  V(kPrebuilt, "prebuilt") \
+  V(kCmdLine, "cmdline")
+
 // We log compilation reasons as part of the metadata we report. Since elsewhere compilation reasons
 // are specified as a string, we define them as an enum here which indicates the reasons that we
 // support.
 enum class CompilationReason {
-  kError,
-  kUnknown,
-  kFirstBoot,
-  kBootAfterOTA,
-  kPostBoot,
-  kInstall,
-  kInstallFast,
-  kInstallBulk,
-  kInstallBulkSecondary,
-  kInstallBulkDowngraded,
-  kInstallBulkSecondaryDowngraded,
-  kBgDexopt,
-  kABOTA,
-  kInactive,
-  kShared,
-  kInstallWithDexMetadata,
-  kPrebuilt,
-  kCmdLine
+#define REASON(kind, name) kind,
+  REASON_NAME_LIST(REASON)
+#undef REASON
 };
 
+#define REASON_NAME(kind, kind_name) \
+    case CompilationReason::kind: return kind_name;
+#define REASON_FROM_NAME(kind, kind_name) \
+    if (name == kind_name) { return CompilationReason::kind; }
+
 constexpr const char* CompilationReasonName(CompilationReason reason) {
   switch (reason) {
-    case CompilationReason::kError:
-      return "error";
-    case CompilationReason::kUnknown:
-      return "unknown";
-    case CompilationReason::kFirstBoot:
-      return "first-boot";
-    case CompilationReason::kBootAfterOTA:
-      return "boot-after-ota";
-    case CompilationReason::kPostBoot:
-      return "post-boot";
-    case CompilationReason::kInstall:
-      return "install";
-    case CompilationReason::kInstallFast:
-      return "install-fast";
-    case CompilationReason::kInstallBulk:
-      return "install-bulk";
-    case CompilationReason::kInstallBulkSecondary:
-      return "install-bulk-secondary";
-    case CompilationReason::kInstallBulkDowngraded:
-      return "install-bulk-downgraded";
-    case CompilationReason::kInstallBulkSecondaryDowngraded:
-      return "install-bulk-secondary-downgraded";
-    case CompilationReason::kBgDexopt:
-      return "bg-dexopt";
-    case CompilationReason::kABOTA:
-      return "ab-ota";
-    case CompilationReason::kInactive:
-      return "inactive";
-    case CompilationReason::kShared:
-      return "shared";
-    case CompilationReason::kInstallWithDexMetadata:
-      return "install-with-dex-metadata";
-    case CompilationReason::kPrebuilt:
-      return "prebuilt";
-    case CompilationReason::kCmdLine:
-      return "cmdline";
+    REASON_NAME_LIST(REASON_NAME)
   }
 }
 
 constexpr CompilationReason CompilationReasonFromName(std::string_view name) {
-  // Names come from PackageManagerServiceCompilerMapping.java
-  if (name == "unknown") {
-    return CompilationReason::kUnknown;
-  }
-  if (name == "first-boot") {
-    return CompilationReason::kFirstBoot;
-  }
-  if (name == "boot-after-ota") {
-    return CompilationReason::kBootAfterOTA;
-  }
-  if (name == "post-boot") {
-    return CompilationReason::kPostBoot;
-  }
-  if (name == "install") {
-    return CompilationReason::kInstall;
-  }
-  if (name == "install-fast") {
-    return CompilationReason::kInstallFast;
-  }
-  if (name == "install-bulk") {
-    return CompilationReason::kInstallBulk;
-  }
-  if (name == "install-bulk-secondary") {
-    return CompilationReason::kInstallBulkSecondary;
-  }
-  if (name == "install-bulk-downgraded") {
-    return CompilationReason::kInstallBulkDowngraded;
-  }
-  if (name == "install-bulk-secondary-downgraded") {
-    return CompilationReason::kInstallBulkSecondaryDowngraded;
-  }
-  if (name == "bg-dexopt") {
-    return CompilationReason::kBgDexopt;
-  }
-  if (name == "ab-ota") {
-    return CompilationReason::kABOTA;
-  }
-  if (name == "inactive") {
-    return CompilationReason::kInactive;
-  }
-  if (name == "shared") {
-    return CompilationReason::kShared;
-  }
-  if (name == "install-with-dex-metadata") {
-    return CompilationReason::kInstallWithDexMetadata;
-  }
-  if (name == "prebuilt") {
-    return CompilationReason::kPrebuilt;
-  }
-  if (name == "cmdline") {
-    return CompilationReason::kCmdLine;
-  }
+  REASON_NAME_LIST(REASON_FROM_NAME)
   return CompilationReason::kError;
 }
 
+#undef REASON_NAME
+#undef ReasonFromName
+
+#define COMPILER_FILTER_REPORTING_LIST(V) \
+  V(kError, "error") /* Error (invalid value) condition */ \
+  V(kUnknown, "unknown") /* Unknown (not set) condition */ \
+  V(kAssumeVerified, "assume-verified") /* Standard compiler filters */ \
+  V(kExtract, "extract") \
+  V(kVerify, "verify") \
+  V(kSpaceProfile, "space-profile") \
+  V(kSpace, "space") \
+  V(kSpeedProfile, "speed-profile") \
+  V(kSpeed, "speed") \
+  V(kEverythingProfile, "everything-profile") \
+  V(kEverything, "everything") \
+  V(kRunFromApk, "run-from-apk") /* Augmented compiler filters as produces by OatFileAssistant#GetOptimizationStatus */ \
+  V(kRunFromApkFallback, "run-from-apk-fallback")
+
+// Augmented compiler filter enum, used in the reporting infra.
+enum class CompilerFilterReporting {
+#define FILTER(kind, name) kind,
+  COMPILER_FILTER_REPORTING_LIST(FILTER)
+#undef FILTER
+};
+
+#define FILTER_NAME(kind, kind_name) \
+    case CompilerFilterReporting::kind: return kind_name;
+#define FILTER_FROM_NAME(kind, kind_name) \
+    if (name == kind_name) { return CompilerFilterReporting::kind; }
+
+constexpr const char* CompilerFilterReportingName(CompilerFilterReporting filter) {
+  switch (filter) {
+    COMPILER_FILTER_REPORTING_LIST(FILTER_NAME)
+  }
+}
+
+constexpr CompilerFilterReporting CompilerFilterReportingFromName(std::string_view name) {
+  COMPILER_FILTER_REPORTING_LIST(FILTER_FROM_NAME)
+  return CompilerFilterReporting::kError;
+}
+
+#undef FILTER_NAME
+#undef FILTER_FROM_NAME
+
 // SessionData contains metadata about a metrics session (basically the lifetime of an ART process).
 // This information should not change for the lifetime of the session.
 struct SessionData {
@@ -208,7 +182,7 @@
   int64_t session_id;
   int32_t uid;
   CompilationReason compilation_reason;
-  std::optional<CompilerFilter::Filter> compiler_filter;
+  CompilerFilterReporting compiler_filter;
 };
 
 // MetricsBackends are used by a metrics reporter to write metrics to some external location. For
@@ -223,7 +197,10 @@
   // includes a session id which is used to correlate any metric reports with the same instance of
   // the ART runtime. Additionally, session_data includes useful metadata such as the package name
   // for this process.
-  virtual void BeginSession(const SessionData& session_data) = 0;
+  //
+  // It may also be called whenever there is an update to the session metadata (e.g. optimization
+  // state).
+  virtual void BeginOrUpdateSession(const SessionData& session_data) = 0;
 
  protected:
   // Called by the metrics reporter to indicate that a new metrics report is starting.
@@ -260,6 +237,8 @@
   friend class MetricsHistogram;
   template <DatumId datum_id, typename T, const T& AccumulatorFunction(const T&, const T&)>
   friend class MetricsAccumulator;
+  template <DatumId datum_id, typename T>
+  friend class MetricsAverage;
   friend class ArtMetrics;
 };
 
@@ -271,7 +250,7 @@
 };
 
 template <DatumId counter_type, typename T = uint64_t>
-class MetricsCounter final : public MetricsBase<T> {
+class MetricsCounter : public MetricsBase<T> {
  public:
   using value_t = T;
   explicit constexpr MetricsCounter(uint64_t value = 0) : value_{value} {
@@ -292,15 +271,62 @@
     value_ = 0;
   }
 
- private:
   value_t Value() const { return value_.load(std::memory_order::memory_order_relaxed); }
 
+ private:
   std::atomic<value_t> value_;
   static_assert(std::atomic<value_t>::is_always_lock_free);
 
   friend class ArtMetrics;
 };
 
+template <DatumId datum_id, typename T = uint64_t>
+class MetricsAverage final : public MetricsCounter<datum_id, T> {
+ public:
+  using value_t = T;
+  using count_t = T;
+  explicit constexpr MetricsAverage(uint64_t value = 0, uint64_t count = 0) :
+      MetricsCounter<datum_id, value_t>(value), count_(count) {
+    // Ensure we do not have any unnecessary data in this class.
+    // Adding intptr_t to accommodate vtable, and rounding up to incorporate
+    // padding.
+    static_assert(RoundUp(sizeof(*this), sizeof(uint64_t))
+                  == RoundUp(sizeof(intptr_t) + sizeof(value_t) + sizeof(count_t),
+                             sizeof(uint64_t)));
+  }
+
+  // We use release memory-order here and then acquire in Report() to ensure
+  // that at least the non-racy reads/writes to this metric are consistent. This
+  // doesn't guarantee the atomicity of the change to both fields, but that
+  // may not be desired because:
+  // 1. The metric eventually becomes consistent.
+  // 2. For sufficiently large count_, a few data points which are off shouldn't
+  // make a huge difference to the reporter.
+  void Add(value_t value) {
+    MetricsCounter<datum_id, value_t>::Add(value);
+    count_.fetch_add(1, std::memory_order::memory_order_release);
+  }
+
+  void Report(MetricsBackend* backend) const {
+    count_t count = count_.load(std::memory_order::memory_order_acquire);
+    backend->ReportCounter(datum_id,
+                           // Avoid divide-by-0.
+                           count != 0 ? MetricsCounter<datum_id, value_t>::Value() / count : 0);
+  }
+
+ protected:
+  void Reset() {
+    count_ = 0;
+    MetricsCounter<datum_id, value_t>::Reset();
+  }
+
+ private:
+  std::atomic<count_t> count_;
+  static_assert(std::atomic<count_t>::is_always_lock_free);
+
+  friend class ArtMetrics;
+};
+
 template <DatumId histogram_type_,
           size_t num_buckets_,
           int64_t minimum_value_,
@@ -413,7 +439,7 @@
  public:
   StringBackend();
 
-  void BeginSession(const SessionData& session_data) override;
+  void BeginOrUpdateSession(const SessionData& session_data) override;
 
   void BeginReport(uint64_t timestamp_millis) override;
 
diff --git a/libartbase/base/metrics/metrics_common.cc b/libartbase/base/metrics/metrics_common.cc
index c8c8701..f09987b 100644
--- a/libartbase/base/metrics/metrics_common.cc
+++ b/libartbase/base/metrics/metrics_common.cc
@@ -51,7 +51,7 @@
 
   return SessionData{
     .compilation_reason = CompilationReason::kUnknown,
-    .compiler_filter = std::nullopt,
+    .compiler_filter = CompilerFilterReporting::kUnknown,
     .session_id = kInvalidSessionId,
     .uid = uid,
   };
@@ -97,7 +97,7 @@
   return result;
 }
 
-void StringBackend::BeginSession(const SessionData& session_data) {
+void StringBackend::BeginOrUpdateSession(const SessionData& session_data) {
   session_data_ = session_data;
 }
 
@@ -110,10 +110,7 @@
     os_ << "    uid: " << session_data_->uid << "\n";
     os_ << "    compilation_reason: " << CompilationReasonName(session_data_->compilation_reason)
         << "\n";
-    os_ << "    compiler_filter: "
-        << (session_data_->compiler_filter.has_value()
-                ? CompilerFilter::NameOfFilter(session_data_->compiler_filter.value())
-                : "(unspecified)")
+    os_ << "    compiler_filter: " << CompilerFilterReportingName(session_data_->compiler_filter)
         << "\n";
   }
   os_ << "  Metrics:\n";
diff --git a/libartbase/base/metrics/metrics_test.cc b/libartbase/base/metrics/metrics_test.cc
index eae9367..ed6f88d 100644
--- a/libartbase/base/metrics/metrics_test.cc
+++ b/libartbase/base/metrics/metrics_test.cc
@@ -110,12 +110,32 @@
   EXPECT_EQ(CounterValue(accumulator), kMaxValue);
 }
 
+TEST_F(MetricsTest, AverageMetric) {
+  MetricsAverage<DatumId::kClassLoadingTotalTime, uint64_t> avg;
+
+  std::vector<std::thread> threads;
+
+  constexpr uint64_t kMaxValue = 100;
+
+  for (uint64_t i = 0; i <= kMaxValue; i++) {
+    threads.emplace_back(std::thread{[&avg, i]() {
+      avg.Add(i);
+    }});
+  }
+
+  for (auto& thread : threads) {
+    thread.join();
+  }
+
+  EXPECT_EQ(CounterValue(avg), (kMaxValue + 1) / 2);
+}
+
 TEST_F(MetricsTest, DatumName) {
   EXPECT_EQ("ClassVerificationTotalTime", DatumName(DatumId::kClassVerificationTotalTime));
 }
 
 TEST_F(MetricsTest, SimpleHistogramTest) {
-  MetricsHistogram<DatumId::kJitMethodCompileTime, 5, 0, 100> histogram;
+  MetricsHistogram<DatumId::kYoungGcCollectionTime, 5, 0, 100> histogram;
 
   // bucket 0: 0-19
   histogram.Add(10);
@@ -148,7 +168,7 @@
 
 // Make sure values added outside the range of the histogram go into the first or last bucket.
 TEST_F(MetricsTest, HistogramOutOfRangeTest) {
-  MetricsHistogram<DatumId::kJitMethodCompileTime, 2, 0, 100> histogram;
+  MetricsHistogram<DatumId::kYoungGcCollectionTime, 2, 0, 100> histogram;
 
   // bucket 0: 0-49
   histogram.Add(-500);
@@ -170,7 +190,7 @@
   static constexpr uint64_t verification_time = 42;
   metrics.ClassVerificationTotalTime()->Add(verification_time);
   // Add a negative value so we are guaranteed that it lands in the first bucket.
-  metrics.JitMethodCompileTime()->Add(-5);
+  metrics.YoungGcCollectionTime()->Add(-5);
 
   // Report and check the data
   class TestBackend : public TestBackendBase {
@@ -193,7 +213,7 @@
                          int64_t,
                          int64_t,
                          const std::vector<uint32_t>& buckets) override {
-      if (histogram_type == DatumId::kJitMethodCompileTime) {
+      if (histogram_type == DatumId::kYoungGcCollectionTime) {
         EXPECT_EQ(buckets[0], 1u);
         for (size_t i = 1; i < buckets.size(); ++i) {
           EXPECT_EQ(buckets[i], 0u);
@@ -215,7 +235,7 @@
 }
 
 TEST_F(MetricsTest, HistogramTimer) {
-  MetricsHistogram<DatumId::kJitMethodCompileTime, 1, 0, 100> test_histogram;
+  MetricsHistogram<DatumId::kYoungGcCollectionTime, 1, 0, 100> test_histogram;
   {
     AutoTimer timer{&test_histogram};
     // Sleep for 2µs so the counter will be greater than 0.
@@ -285,6 +305,141 @@
   metrics.ReportAllMetrics(&zero_backend);
 }
 
+TEST(CompilerFilterReportingTest, FromName) {
+  ASSERT_EQ(CompilerFilterReportingFromName("error"),
+            CompilerFilterReporting::kError);
+  ASSERT_EQ(CompilerFilterReportingFromName("unknown"),
+            CompilerFilterReporting::kUnknown);
+  ASSERT_EQ(CompilerFilterReportingFromName("assume-verified"),
+            CompilerFilterReporting::kAssumeVerified);
+  ASSERT_EQ(CompilerFilterReportingFromName("extract"),
+            CompilerFilterReporting::kExtract);
+  ASSERT_EQ(CompilerFilterReportingFromName("verify"),
+            CompilerFilterReporting::kVerify);
+  ASSERT_EQ(CompilerFilterReportingFromName("space-profile"),
+            CompilerFilterReporting::kSpaceProfile);
+  ASSERT_EQ(CompilerFilterReportingFromName("space"),
+            CompilerFilterReporting::kSpace);
+  ASSERT_EQ(CompilerFilterReportingFromName("speed-profile"),
+            CompilerFilterReporting::kSpeedProfile);
+  ASSERT_EQ(CompilerFilterReportingFromName("speed"),
+            CompilerFilterReporting::kSpeed);
+  ASSERT_EQ(CompilerFilterReportingFromName("everything-profile"),
+            CompilerFilterReporting::kEverythingProfile);
+  ASSERT_EQ(CompilerFilterReportingFromName("everything"),
+            CompilerFilterReporting::kEverything);
+  ASSERT_EQ(CompilerFilterReportingFromName("run-from-apk"),
+            CompilerFilterReporting::kRunFromApk);
+  ASSERT_EQ(CompilerFilterReportingFromName("run-from-apk-fallback"),
+            CompilerFilterReporting::kRunFromApkFallback);
+}
+
+TEST(CompilerFilterReportingTest, Name) {
+  ASSERT_EQ(CompilerFilterReportingName(CompilerFilterReporting::kError),
+            "error");
+  ASSERT_EQ(CompilerFilterReportingName(CompilerFilterReporting::kUnknown),
+            "unknown");
+  ASSERT_EQ(CompilerFilterReportingName(CompilerFilterReporting::kAssumeVerified),
+            "assume-verified");
+  ASSERT_EQ(CompilerFilterReportingName(CompilerFilterReporting::kExtract),
+            "extract");
+  ASSERT_EQ(CompilerFilterReportingName(CompilerFilterReporting::kVerify),
+            "verify");
+  ASSERT_EQ(CompilerFilterReportingName(CompilerFilterReporting::kSpaceProfile),
+            "space-profile");
+  ASSERT_EQ(CompilerFilterReportingName(CompilerFilterReporting::kSpace),
+            "space");
+  ASSERT_EQ(CompilerFilterReportingName(CompilerFilterReporting::kSpeedProfile),
+            "speed-profile");
+  ASSERT_EQ(CompilerFilterReportingName(CompilerFilterReporting::kSpeed),
+            "speed");
+  ASSERT_EQ(CompilerFilterReportingName(CompilerFilterReporting::kEverythingProfile),
+            "everything-profile");
+  ASSERT_EQ(CompilerFilterReportingName(CompilerFilterReporting::kEverything),
+            "everything");
+  ASSERT_EQ(CompilerFilterReportingName(CompilerFilterReporting::kRunFromApk),
+            "run-from-apk");
+  ASSERT_EQ(CompilerFilterReportingName(CompilerFilterReporting::kRunFromApkFallback),
+            "run-from-apk-fallback");
+}
+
+TEST(CompilerReason, FromName) {
+  ASSERT_EQ(CompilationReasonFromName("unknown"),
+            CompilationReason::kUnknown);
+  ASSERT_EQ(CompilationReasonFromName("first-boot"),
+            CompilationReason::kFirstBoot);
+  ASSERT_EQ(CompilationReasonFromName("boot-after-ota"),
+            CompilationReason::kBootAfterOTA);
+  ASSERT_EQ(CompilationReasonFromName("post-boot"),
+            CompilationReason::kPostBoot);
+  ASSERT_EQ(CompilationReasonFromName("install"),
+            CompilationReason::kInstall);
+  ASSERT_EQ(CompilationReasonFromName("install-fast"),
+            CompilationReason::kInstallFast);
+  ASSERT_EQ(CompilationReasonFromName("install-bulk"),
+            CompilationReason::kInstallBulk);
+  ASSERT_EQ(CompilationReasonFromName("install-bulk-secondary"),
+            CompilationReason::kInstallBulkSecondary);
+  ASSERT_EQ(CompilationReasonFromName("install-bulk-downgraded"),
+            CompilationReason::kInstallBulkDowngraded);
+  ASSERT_EQ(CompilationReasonFromName("install-bulk-secondary-downgraded"),
+            CompilationReason::kInstallBulkSecondaryDowngraded);
+  ASSERT_EQ(CompilationReasonFromName("bg-dexopt"),
+            CompilationReason::kBgDexopt);
+  ASSERT_EQ(CompilationReasonFromName("ab-ota"),
+            CompilationReason::kABOTA);
+  ASSERT_EQ(CompilationReasonFromName("inactive"),
+            CompilationReason::kInactive);
+  ASSERT_EQ(CompilationReasonFromName("shared"),
+            CompilationReason::kShared);
+  ASSERT_EQ(CompilationReasonFromName("install-with-dex-metadata"),
+            CompilationReason::kInstallWithDexMetadata);
+  ASSERT_EQ(CompilationReasonFromName("prebuilt"),
+            CompilationReason::kPrebuilt);
+  ASSERT_EQ(CompilationReasonFromName("cmdline"),
+            CompilationReason::kCmdLine);
+  ASSERT_EQ(CompilationReasonFromName("error"),
+            CompilationReason::kError);
+}
+
+TEST(CompilerReason, Name) {
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kUnknown),
+            "unknown");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kFirstBoot),
+            "first-boot");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kBootAfterOTA),
+            "boot-after-ota");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kPostBoot),
+            "post-boot");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kInstall),
+            "install");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kInstallFast),
+            "install-fast");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kInstallBulk),
+            "install-bulk");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kInstallBulkSecondary),
+            "install-bulk-secondary");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kInstallBulkDowngraded),
+            "install-bulk-downgraded");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kInstallBulkSecondaryDowngraded),
+            "install-bulk-secondary-downgraded");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kBgDexopt),
+            "bg-dexopt");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kABOTA),
+            "ab-ota");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kInactive),
+            "inactive");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kShared),
+            "shared");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kInstallWithDexMetadata),
+            "install-with-dex-metadata");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kPrebuilt),
+            "prebuilt");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kCmdLine),
+            "cmdline");
+  ASSERT_EQ(CompilationReasonName(CompilationReason::kError),
+            "error");
+}
 }  // namespace metrics
 }  // namespace art
 
diff --git a/libartbase/base/metrics/metrics_test.h b/libartbase/base/metrics/metrics_test.h
index 48fd517..3e8b42a 100644
--- a/libartbase/base/metrics/metrics_test.h
+++ b/libartbase/base/metrics/metrics_test.h
@@ -33,7 +33,7 @@
 // test cases to test specific behaviors.
 class TestBackendBase : public MetricsBackend {
  public:
-  void BeginSession([[maybe_unused]] const SessionData& session_data) override {}
+  void BeginOrUpdateSession([[maybe_unused]] const SessionData& session_data) override {}
 
   void BeginReport([[maybe_unused]] uint64_t timestamp_since_start_ms) override {}
 
diff --git a/libartbase/base/time_utils.h b/libartbase/base/time_utils.h
index fbf3e94..dd73b1c 100644
--- a/libartbase/base/time_utils.h
+++ b/libartbase/base/time_utils.h
@@ -77,6 +77,11 @@
   return ns / 1000 / 1000;
 }
 
+// Converts the given number of nanoseconds to microseconds.
+static constexpr uint64_t NsToUs(uint64_t ns) {
+  return ns / 1000;
+}
+
 // Converts the given number of milliseconds to nanoseconds
 static constexpr uint64_t MsToNs(uint64_t ms) {
   return ms * 1000 * 1000;
diff --git a/libartbase/base/utils_test.cc b/libartbase/base/utils_test.cc
index 09705fe..ab8627f 100644
--- a/libartbase/base/utils_test.cc
+++ b/libartbase/base/utils_test.cc
@@ -17,6 +17,7 @@
 #include "utils.h"
 #include "stl_util.h"
 
+#include "gmock/gmock.h"
 #include "gtest/gtest.h"
 
 namespace art {
@@ -113,7 +114,10 @@
 }
 
 TEST_F(UtilsTest, GetProcessStatus) {
-  EXPECT_EQ("art_libartbase_", GetProcessStatus("Name"));
+  EXPECT_THAT(GetProcessStatus("Name"),
+              testing::AnyOf(
+                  "art_libartbase_",    // Test binary name: `art_libartbase_test`.
+                  "art_standalone_"));  // Test binary name: `art_standalone_libartbase_test`.
   EXPECT_EQ("R (running)", GetProcessStatus("State"));
   EXPECT_EQ("<unknown>", GetProcessStatus("tate"));
   EXPECT_EQ("<unknown>", GetProcessStatus("e"));
diff --git a/libartpalette/Android.bp b/libartpalette/Android.bp
index e8b7fd8..19d12c7 100644
--- a/libartpalette/Android.bp
+++ b/libartpalette/Android.bp
@@ -119,10 +119,29 @@
     ],
 }
 
-art_cc_test {
-    name: "art_libartpalette_tests",
-    defaults: ["art_gtest_defaults"],
-    host_supported: true,
+art_cc_defaults {
+    name: "art_libartpalette_tests_defaults",
     srcs: ["apex/palette_test.cc"],
     shared_libs: ["libartpalette"],
 }
+
+// Version of ART gtest `art_libartpalette_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_libartpalette_tests",
+    defaults: [
+        "art_gtest_defaults",
+        "art_libartpalette_tests_defaults",
+    ],
+    host_supported: true,
+}
+
+// Standalone version of ART gtest `art_libartpalette_tests`, not bundled with the ART APEX on
+// target.
+art_cc_test {
+    name: "art_standalone_libartpalette_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_libartpalette_tests_defaults",
+    ],
+}
diff --git a/libartpalette/apex/palette.cc b/libartpalette/apex/palette.cc
index 71fd39d..75a3878 100644
--- a/libartpalette/apex/palette.cc
+++ b/libartpalette/apex/palette.cc
@@ -218,4 +218,28 @@
   return m(env);
 }
 
+palette_status_t PaletteReportLockContention(JNIEnv* env,
+                                             int32_t wait_ms,
+                                             const char* filename,
+                                             int32_t line_number,
+                                             const char* method_name,
+                                             const char* owner_filename,
+                                             int32_t owner_line_number,
+                                             const char* owner_method_name,
+                                             const char* proc_name,
+                                             const char* thread_name) {
+  PaletteReportLockContentionMethod m =
+      PaletteLoader::Instance().GetPaletteReportLockContentionMethod();
+  return m(env,
+           wait_ms,
+           filename,
+           line_number,
+           method_name,
+           owner_filename,
+           owner_line_number,
+           owner_method_name,
+           proc_name,
+           thread_name);
+}
+
 }  // extern "C"
diff --git a/libartpalette/include/palette/palette_method_list.h b/libartpalette/include/palette/palette_method_list.h
index 6a7822b..066f24f 100644
--- a/libartpalette/include/palette/palette_method_list.h
+++ b/libartpalette/include/palette/palette_method_list.h
@@ -53,5 +53,15 @@
   M(PaletteShouldReportJniInvocations, bool*)                               \
   M(PaletteNotifyBeginJniInvocation, JNIEnv* env)                           \
   M(PaletteNotifyEndJniInvocation, JNIEnv* env)                             \
+  M(PaletteReportLockContention, JNIEnv* env,                               \
+                                 int32_t wait_ms,                           \
+                                 const char* filename,                      \
+                                 int32_t line_number,                       \
+                                 const char* method_name,                   \
+                                 const char* owner_filename,                \
+                                 int32_t owner_line_number,                 \
+                                 const char* owner_method_name,             \
+                                 const char* proc_name,                     \
+                                 const char* thread_name)                   \
 
 #endif  // ART_LIBARTPALETTE_INCLUDE_PALETTE_PALETTE_METHOD_LIST_H_
diff --git a/libartpalette/libartpalette.map.txt b/libartpalette/libartpalette.map.txt
index 9c846b1..6401010 100644
--- a/libartpalette/libartpalette.map.txt
+++ b/libartpalette/libartpalette.map.txt
@@ -35,6 +35,7 @@
     PaletteShouldReportJniInvocations; #apex
     PaletteNotifyBeginJniInvocation; #apex
     PaletteNotifyEndJniInvocation; #apex
+    PaletteReportLockContention; #apex
 
   local:
     *;
diff --git a/libartpalette/system/palette_fake.cc b/libartpalette/system/palette_fake.cc
index dbbbf89..bbf8f2d 100644
--- a/libartpalette/system/palette_fake.cc
+++ b/libartpalette/system/palette_fake.cc
@@ -128,3 +128,16 @@
 palette_status_t PaletteNotifyEndJniInvocation(JNIEnv* env ATTRIBUTE_UNUSED) {
   return PALETTE_STATUS_OK;
 }
+
+palette_status_t PaletteReportLockContention(JNIEnv* env ATTRIBUTE_UNUSED,
+                                             int32_t wait_ms ATTRIBUTE_UNUSED,
+                                             const char* filename ATTRIBUTE_UNUSED,
+                                             int32_t line_number ATTRIBUTE_UNUSED,
+                                             const char* method_name ATTRIBUTE_UNUSED,
+                                             const char* owner_filename ATTRIBUTE_UNUSED,
+                                             int32_t owner_line_number ATTRIBUTE_UNUSED,
+                                             const char* owner_method_name ATTRIBUTE_UNUSED,
+                                             const char* proc_name ATTRIBUTE_UNUSED,
+                                             const char* thread_name ATTRIBUTE_UNUSED) {
+  return PALETTE_STATUS_OK;
+}
diff --git a/libdexfile/Android.bp b/libdexfile/Android.bp
index b6d91b9..31cf197 100644
--- a/libdexfile/Android.bp
+++ b/libdexfile/Android.bp
@@ -249,17 +249,10 @@
         // stubs, and libartd depends on this.
         "com.android.art",
     ],
-    stubs: {
-        symbol_file: "libdexfile.map.txt",
-        versions: ["1"],
-    },
 }
 
-art_cc_test {
-    name: "art_libdexfile_tests",
-    defaults: [
-        "art_gtest_defaults",
-    ],
+art_cc_defaults {
+    name: "art_libdexfile_tests_defaults",
     srcs: [
         "dex/art_dex_file_loader_test.cc",
         "dex/class_accessor_test.cc",
@@ -290,6 +283,26 @@
     ],
 }
 
+// Version of ART gtest `art_libdexfile_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_libdexfile_tests",
+    defaults: [
+        "art_gtest_defaults",
+        "art_libdexfile_tests_defaults",
+    ],
+}
+
+// Standalone version of ART gtest `art_libdexfile_tests`, not bundled with the ART APEX on target.
+art_cc_test {
+    name: "art_standalone_libdexfile_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_libdexfile_tests_defaults",
+    ],
+    test_config: "art_standalone_libdexfile_tests.xml",
+}
+
 cc_library_headers {
     name: "libdexfile_external_headers",
     visibility: ["//visibility:public"],
@@ -382,13 +395,11 @@
     min_sdk_version: "S",
 }
 
-art_cc_test {
-    name: "art_libdexfile_support_tests",
+art_cc_defaults {
+    name: "art_libdexfile_support_tests_defaults",
     defaults: [
         "art_module_source_build_defaults",
-        "art_test_defaults",
     ],
-    host_supported: true,
     test_suites: ["general-tests"],
     srcs: [
         "external/dex_file_supp_test.cc",
@@ -404,6 +415,44 @@
     ],
 }
 
+// Version of ART gtest `art_libdexfile_support_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_libdexfile_support_tests",
+    host_supported: true,
+    defaults: [
+        "art_test_defaults",
+        "art_libdexfile_support_tests_defaults",
+    ],
+}
+
+// Standalone version of ART gtest `art_libdexfile_support_tests`, not bundled with the ART APEX on
+// target.
+art_cc_test {
+    name: "art_standalone_libdexfile_support_tests",
+    defaults: [
+        "art_standalone_test_defaults",
+        "art_libdexfile_support_tests_defaults",
+    ],
+
+    // Support multilib variants (using different suffix per sub-architecture), which is needed on
+    // build targets with secondary architectures, as the MTS test suite packaging logic flattens
+    // all test artifacts into a single `testcases` directory.
+    compile_multilib: "both",
+    multilib: {
+        lib32: {
+            suffix: "32",
+        },
+        lib64: {
+            suffix: "64",
+        },
+    },
+
+    test_suites: [
+        "mts-art",
+    ],
+}
+
 cc_library_static {
     name: "libdexfile_support_static",
     host_supported: true,
diff --git a/libdexfile/art_standalone_libdexfile_tests.xml b/libdexfile/art_standalone_libdexfile_tests.xml
new file mode 100644
index 0000000..d00235a
--- /dev/null
+++ b/libdexfile/art_standalone_libdexfile_tests.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Runs art_standalone_libdexfile_tests.">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art_standalone_libdexfile_tests->/data/local/tmp/art_standalone_libdexfile_tests/art_standalone_libdexfile_tests" />
+        <option name="append-bitness" value="true" />
+    </target_preparer>
+
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art-gtest-jars-GetMethodSignature.jar->/data/local/tmp/art_standalone_libdexfile_tests/art-gtest-jars-GetMethodSignature.jar" />
+        <option name="push" value="art-gtest-jars-Lookup.jar->/data/local/tmp/art_standalone_libdexfile_tests/art-gtest-jars-Lookup.jar" />
+        <option name="push" value="art-gtest-jars-Main.jar->/data/local/tmp/art_standalone_libdexfile_tests/art-gtest-jars-Main.jar" />
+        <option name="push" value="art-gtest-jars-MultiDex.jar->/data/local/tmp/art_standalone_libdexfile_tests/art-gtest-jars-MultiDex.jar" />
+        <option name="push" value="art-gtest-jars-Nested.jar->/data/local/tmp/art_standalone_libdexfile_tests/art-gtest-jars-Nested.jar" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.GTest" >
+        <option name="native-test-device-path" value="/data/local/tmp/art_standalone_libdexfile_tests" />
+        <option name="module-name" value="art_standalone_libdexfile_tests" />
+        <option name="ld-library-path-32" value="/apex/com.android.art/lib" />
+        <option name="ld-library-path-64" value="/apex/com.android.art/lib64" />
+    </test>
+
+    <!-- When this test is run in a Mainline context (e.g. with `mts-tradefed`), only enable it if
+         one of the Mainline modules below is present on the device used for testing. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
+        <!-- ART Mainline Module (internal version). -->
+        <option name="mainline-module-package-name" value="com.google.android.art" />
+        <!-- ART Mainline Module (external (AOSP) version). -->
+        <option name="mainline-module-package-name" value="com.android.art" />
+    </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
+</configuration>
diff --git a/libdexfile/dex/compact_dex_file.h b/libdexfile/dex/compact_dex_file.h
index 9a12f4a..9c3b7a4 100644
--- a/libdexfile/dex/compact_dex_file.h
+++ b/libdexfile/dex/compact_dex_file.h
@@ -28,7 +28,7 @@
  public:
   static constexpr uint8_t kDexMagic[kDexMagicSize] = { 'c', 'd', 'e', 'x' };
   // Last change: remove code item deduping.
-  static constexpr uint8_t kDexMagicVersion[] = {'0', '0', '2', '\0'};
+  static constexpr uint8_t kDexMagicVersion[] = {'0', '0', '1', '\0'};
 
   enum class FeatureFlags : uint32_t {
     kDefaultMethods = 0x1,
diff --git a/libdexfile/dex/dex_file.h b/libdexfile/dex/dex_file.h
index 5363b00..e3027fc 100644
--- a/libdexfile/dex/dex_file.h
+++ b/libdexfile/dex/dex_file.h
@@ -738,7 +738,7 @@
   }
 
   // Used by oat writer.
-  void SetOatDexFile(OatDexFile* oat_dex_file) const {
+  void SetOatDexFile(const OatDexFile* oat_dex_file) const {
     oat_dex_file_ = oat_dex_file;
   }
 
diff --git a/libprofile/Android.bp b/libprofile/Android.bp
index fa10dfa..ecbcd0b 100644
--- a/libprofile/Android.bp
+++ b/libprofile/Android.bp
@@ -184,11 +184,8 @@
 // For now many of these tests still use CommonRuntimeTest, almost universally because of
 // ScratchFile and related.
 // TODO: Remove CommonRuntimeTest dependency from these tests.
-art_cc_test {
-    name: "art_libprofile_tests",
-    defaults: [
-        "art_gtest_defaults",
-    ],
+art_cc_defaults {
+    name: "art_libprofile_tests_defaults",
     data: [
         ":art-gtest-jars-ManyMethods",
         ":art-gtest-jars-MultiDex",
@@ -199,9 +196,34 @@
         "profile/profile_compilation_info_test.cc",
     ],
     shared_libs: [
-        "libartbased",
-        "libdexfiled",
-        "libartbased",
         "libziparchive",
     ],
 }
+
+// Version of ART gtest `art_libprofile_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_libprofile_tests",
+    defaults: [
+        "art_gtest_defaults",
+        "art_libprofile_tests_defaults",
+    ],
+    shared_libs: [
+        "libartbased",
+        "libdexfiled",
+    ],
+}
+
+// Standalone version of ART gtest `art_libprofile_tests`, not bundled with the ART APEX on target.
+art_cc_test {
+    name: "art_standalone_libprofile_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_libprofile_tests_defaults",
+    ],
+    shared_libs: [
+        "libartbase",
+        "libdexfile",
+    ],
+    test_config: "art_standalone_libprofile_tests.xml",
+}
diff --git a/libprofile/art_standalone_libprofile_tests.xml b/libprofile/art_standalone_libprofile_tests.xml
new file mode 100644
index 0000000..f113668
--- /dev/null
+++ b/libprofile/art_standalone_libprofile_tests.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Runs art_standalone_libprofile_tests.">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art_standalone_libprofile_tests->/data/local/tmp/art_standalone_libprofile_tests/art_standalone_libprofile_tests" />
+        <option name="append-bitness" value="true" />
+    </target_preparer>
+
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art-gtest-jars-ManyMethods.jar->/data/local/tmp/art_standalone_libprofile_tests/art-gtest-jars-ManyMethods.jar" />
+        <option name="push" value="art-gtest-jars-MultiDex.jar->/data/local/tmp/art_standalone_libprofile_tests/art-gtest-jars-MultiDex.jar" />
+        <option name="push" value="art-gtest-jars-ProfileTestMultiDex.jar->/data/local/tmp/art_standalone_libprofile_tests/art-gtest-jars-ProfileTestMultiDex.jar" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.GTest" >
+        <option name="native-test-device-path" value="/data/local/tmp/art_standalone_libprofile_tests" />
+        <option name="module-name" value="art_standalone_libprofile_tests" />
+        <option name="ld-library-path-32" value="/apex/com.android.art/lib" />
+        <option name="ld-library-path-64" value="/apex/com.android.art/lib64" />
+    </test>
+
+    <!-- When this test is run in a Mainline context (e.g. with `mts-tradefed`), only enable it if
+         one of the Mainline modules below is present on the device used for testing. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
+        <!-- ART Mainline Module (internal version). -->
+        <option name="mainline-module-package-name" value="com.google.android.art" />
+        <!-- ART Mainline Module (external (AOSP) version). -->
+        <option name="mainline-module-package-name" value="com.android.art" />
+    </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
+</configuration>
diff --git a/libprofile/profile/profile_compilation_info.cc b/libprofile/profile/profile_compilation_info.cc
index 8267174..48e38dd 100644
--- a/libprofile/profile/profile_compilation_info.cc
+++ b/libprofile/profile/profile_compilation_info.cc
@@ -410,7 +410,7 @@
         ptr_end_(nullptr) {}
 
   explicit SafeBuffer(size_t size)
-      : storage_(new uint8_t[size]),
+      : storage_(new uint8_t[size]()),
         ptr_current_(storage_.get()),
         ptr_end_(ptr_current_ + size) {}
 
diff --git a/oatdump/Android.bp b/oatdump/Android.bp
index 28c0f9a..a8e6dfe 100644
--- a/oatdump/Android.bp
+++ b/oatdump/Android.bp
@@ -201,11 +201,8 @@
     group_static_libs: true,
 }
 
-art_cc_test {
-    name: "art_oatdump_tests",
-    defaults: [
-        "art_gtest_defaults",
-    ],
+art_cc_defaults {
+    name: "art_oatdump_tests_defaults",
     data: [
         ":art-gtest-jars-ProfileTestMultiDex",
     ],
@@ -226,3 +223,23 @@
         },
     },
 }
+
+// Version of ART gtest `art_oatdump_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_oatdump_tests",
+    defaults: [
+        "art_gtest_defaults",
+        "art_oatdump_tests_defaults",
+    ],
+}
+
+// Standalone version of ART gtest `art_oatdump_tests`, not bundled with the ART APEX on target.
+art_cc_test {
+    name: "art_standalone_oatdump_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_oatdump_tests_defaults",
+    ],
+    test_config: "art_standalone_oatdump_tests.xml",
+}
diff --git a/oatdump/art_standalone_oatdump_tests.xml b/oatdump/art_standalone_oatdump_tests.xml
new file mode 100644
index 0000000..57e9163
--- /dev/null
+++ b/oatdump/art_standalone_oatdump_tests.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Runs art_standalone_oatdump_tests.">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art_standalone_oatdump_tests->/data/local/tmp/art_standalone_oatdump_tests/art_standalone_oatdump_tests" />
+        <option name="append-bitness" value="true" />
+    </target_preparer>
+
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art-gtest-jars-ProfileTestMultiDex.jar->/data/local/tmp/art_standalone_oatdump_tests/art-gtest-jars-ProfileTestMultiDex.jar" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.GTest" >
+        <option name="native-test-device-path" value="/data/local/tmp/art_standalone_oatdump_tests" />
+        <option name="module-name" value="art_standalone_oatdump_tests" />
+        <option name="ld-library-path-32" value="/apex/com.android.art/lib" />
+        <option name="ld-library-path-64" value="/apex/com.android.art/lib64" />
+    </test>
+
+    <!-- When this test is run in a Mainline context (e.g. with `mts-tradefed`), only enable it if
+         one of the Mainline modules below is present on the device used for testing. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
+        <!-- ART Mainline Module (internal version). -->
+        <option name="mainline-module-package-name" value="com.google.android.art" />
+        <!-- ART Mainline Module (external (AOSP) version). -->
+        <option name="mainline-module-package-name" value="com.android.art" />
+    </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
+</configuration>
diff --git a/odrefresh/Android.bp b/odrefresh/Android.bp
index 255acc9..58c228b 100644
--- a/odrefresh/Android.bp
+++ b/odrefresh/Android.bp
@@ -50,8 +50,7 @@
     static_libs: ["libxml2"],
     target: {
         android: {
-            // Use the 32-bit version of odrefresh on devices.
-            compile_multilib: "prefer32",
+            compile_multilib: "first",
         },
         host: {
             shared_libs: [
@@ -160,11 +159,8 @@
     ],
 }
 
-art_cc_test {
-    name: "art_odrefresh_tests",
-    defaults: [
-        "art_gtest_defaults",
-    ],
+art_cc_defaults {
+    name: "art_odrefresh_tests_defaults",
     generated_sources: ["art-odrefresh-operator-srcs"],
     header_libs: ["odrefresh_headers"],
     srcs: [
@@ -182,6 +178,25 @@
     shared_libs: ["libbase"],
 }
 
+// Version of ART gtest `art_odrefresh_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_odrefresh_tests",
+    defaults: [
+        "art_gtest_defaults",
+        "art_odrefresh_tests_defaults",
+    ],
+}
+
+// Standalone version of ART gtest `art_odrefresh_tests`, not bundled with the ART APEX on target.
+art_cc_test {
+    name: "art_standalone_odrefresh_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_odrefresh_tests_defaults",
+    ],
+}
+
 genrule {
     name: "statslog_odrefresh.h",
     tools: ["stats-log-api-gen"],
diff --git a/odrefresh/CacheInfo.xsd b/odrefresh/CacheInfo.xsd
index a0c00af..b58453a 100644
--- a/odrefresh/CacheInfo.xsd
+++ b/odrefresh/CacheInfo.xsd
@@ -38,6 +38,8 @@
     <xs:attribute name="versionCode" type="xs:long" use="required" />
     <!-- Module versionName for the active ART APEX from `/apex/apex-info-list.xml`. -->
     <xs:attribute name="versionName" type="xs:string" use="required" />
+    <!-- Module lastUpdateMillis for the active ART APEX from `/apex/apex-info-list.xml`. -->
+    <xs:attribute name="lastUpdateMillis" type="xs:long" use="required" />
   </xs:complexType>
 
   <!-- Components of the `DEX2OATBOOTCLASSPATH`. -->
diff --git a/odrefresh/odr_compilation_log.cc b/odrefresh/odr_compilation_log.cc
index 55432f4..37804a2 100644
--- a/odrefresh/odr_compilation_log.cc
+++ b/odrefresh/odr_compilation_log.cc
@@ -41,7 +41,9 @@
   auto saved_exceptions = is.exceptions();
   is.exceptions(std::ios_base::iostate {});
 
+  // Write log entry. NB update OdrCompilationLog::kLogVersion if changing the format here.
   is >> entry.apex_version >> std::ws;
+  is >> entry.last_update_millis >> std::ws;
   is >> entry.trigger >> std::ws;
   is >> entry.when >> std::ws;
   is >> entry.exit_code >> std::ws;
@@ -59,6 +61,7 @@
   os.exceptions(std::ios_base::iostate {});
 
   os << entry.apex_version << kSpace;
+  os << entry.last_update_millis << kSpace;
   os << entry.trigger << kSpace;
   os << entry.when << kSpace;
   os << entry.exit_code << std::endl;
@@ -69,8 +72,8 @@
 }
 
 bool operator==(const OdrCompilationLogEntry& lhs, const OdrCompilationLogEntry& rhs) {
-  return lhs.apex_version == rhs.apex_version && lhs.trigger == rhs.trigger &&
-         lhs.when == rhs.when && lhs.exit_code == rhs.exit_code;
+  return lhs.apex_version == rhs.apex_version && lhs.last_update_millis == rhs.last_update_millis &&
+         lhs.trigger == rhs.trigger && lhs.when == rhs.when && lhs.exit_code == rhs.exit_code;
 }
 
 bool operator!=(const OdrCompilationLogEntry& lhs, const OdrCompilationLogEntry& rhs) {
@@ -98,6 +101,12 @@
     return false;
   }
 
+  std::string log_version;
+  ifs >> log_version >> std::ws;
+  if (log_version != kLogVersion) {
+    return false;
+  }
+
   while (!ifs.eof()) {
     OdrCompilationLogEntry entry;
     ifs >> entry;
@@ -117,6 +126,7 @@
     return false;
   }
 
+  ofs << kLogVersion << std::endl;
   for (const auto& entry : entries_) {
     ofs << entry;
     if (ofs.fail()) {
@@ -148,23 +158,29 @@
 }
 
 void OdrCompilationLog::Log(int64_t apex_version,
+                            int64_t last_update_millis,
                             OdrMetrics::Trigger trigger,
                             ExitCode compilation_result) {
   time_t now;
   time(&now);
-  Log(apex_version, trigger, now, compilation_result);
+  Log(apex_version, last_update_millis, trigger, now, compilation_result);
 }
 
 void OdrCompilationLog::Log(int64_t apex_version,
+                            int64_t last_update_millis,
                             OdrMetrics::Trigger trigger,
                             time_t when,
                             ExitCode compilation_result) {
-  entries_.push_back(OdrCompilationLogEntry{
-      apex_version, static_cast<int32_t>(trigger), when, static_cast<int32_t>(compilation_result)});
+  entries_.push_back(OdrCompilationLogEntry{apex_version,
+                                            last_update_millis,
+                                            static_cast<int32_t>(trigger),
+                                            when,
+                                            static_cast<int32_t>(compilation_result)});
   Truncate();
 }
 
 bool OdrCompilationLog::ShouldAttemptCompile(int64_t apex_version,
+                                             int64_t last_update_millis,
                                              OdrMetrics::Trigger trigger,
                                              time_t now) const {
   if (entries_.size() == 0) {
@@ -173,7 +189,12 @@
   }
 
   if (apex_version != entries_.back().apex_version) {
-    // There is a new ART APEX, we should use compile right away.
+    // There is a new ART APEX, we should compile right away.
+    return true;
+  }
+
+    if (last_update_millis != entries_.back().last_update_millis) {
+    // There is a samegrade ART APEX update, we should compile right away.
     return true;
   }
 
diff --git a/odrefresh/odr_compilation_log.h b/odrefresh/odr_compilation_log.h
index 6f13c97..894079c 100644
--- a/odrefresh/odr_compilation_log.h
+++ b/odrefresh/odr_compilation_log.h
@@ -32,6 +32,7 @@
 // OdrCompilationLogEntry represents the result of a compilation attempt by odrefresh.
 struct OdrCompilationLogEntry {
   int64_t apex_version;
+  int64_t last_update_millis;
   int32_t trigger;
   time_t when;
   int32_t exit_code;
@@ -53,6 +54,11 @@
   // directory is only used by odrefresh whereas the ART apexdata directory is also used by odsign
   // and others which may lead to the deletion (or rollback) of the log file.
   static constexpr const char* kCompilationLogFile = "/data/misc/odrefresh/compilation-log.txt";
+
+  // Version string that appears on the first line of the compilation log.
+  static constexpr const char kLogVersion[] = "CompilationLog/1.0";
+
+  // Number of log entries in the compilation log.
   static constexpr const size_t kMaxLoggedEntries = 4;
 
   explicit OdrCompilationLog(const char* compilation_log_path = kCompilationLogFile);
@@ -60,6 +66,7 @@
 
   // Applies policy to compilation log to determine whether to recompile.
   bool ShouldAttemptCompile(int64_t apex_version,
+                            int64_t last_update_millis,
                             OdrMetrics::Trigger trigger,
                             time_t now = 0) const;
 
@@ -69,9 +76,13 @@
   // Returns the entry at position `index` or nullptr if `index` is out of bounds.
   const OdrCompilationLogEntry* Peek(size_t index) const;
 
-  void Log(int64_t apex_version, OdrMetrics::Trigger trigger, ExitCode compilation_result);
+  void Log(int64_t apex_version,
+           int64_t last_update_millis,
+           OdrMetrics::Trigger trigger,
+           ExitCode compilation_result);
 
   void Log(int64_t apex_version,
+           int64_t last_update_millis,
            OdrMetrics::Trigger trigger,
            time_t when,
            ExitCode compilation_result);
diff --git a/odrefresh/odr_compilation_log_test.cc b/odrefresh/odr_compilation_log_test.cc
index c5c9555..d99b4d9 100644
--- a/odrefresh/odr_compilation_log_test.cc
+++ b/odrefresh/odr_compilation_log_test.cc
@@ -28,8 +28,8 @@
 #include <string>
 #include <vector>
 
+#include "android-base/file.h"
 #include "base/common_art_test.h"
-
 #include "odrefresh/odrefresh.h"
 #include "odr_metrics.h"
 
@@ -41,28 +41,31 @@
 class OdrCompilationLogTest : public CommonArtTest {};
 
 TEST(OdrCompilationLogEntry, Equality) {
-  OdrCompilationLogEntry a{1, 2, 3, 4};
+  OdrCompilationLogEntry a{1, 2, 3, 4, 5};
 
-  ASSERT_EQ(a, (OdrCompilationLogEntry{1, 2, 3, 4}));
-  ASSERT_NE(a, (OdrCompilationLogEntry{9, 2, 3, 4}));
-  ASSERT_NE(a, (OdrCompilationLogEntry{1, 9, 3, 4}));
-  ASSERT_NE(a, (OdrCompilationLogEntry{1, 2, 9, 4}));
-  ASSERT_NE(a, (OdrCompilationLogEntry{2, 2, 3, 9}));
+  ASSERT_EQ(a, (OdrCompilationLogEntry{1, 2, 3, 4, 5}));
+  ASSERT_NE(a, (OdrCompilationLogEntry{9, 2, 3, 4, 5}));
+  ASSERT_NE(a, (OdrCompilationLogEntry{1, 9, 3, 4, 5}));
+  ASSERT_NE(a, (OdrCompilationLogEntry{1, 2, 9, 4, 5}));
+  ASSERT_NE(a, (OdrCompilationLogEntry{2, 2, 3, 9, 5}));
+  ASSERT_NE(a, (OdrCompilationLogEntry{2, 2, 3, 5, 9}));
 }
 
 TEST(OdrCompilationLogEntry, InputOutput) {
   const OdrCompilationLogEntry entries[] = {
-      {1, 2, 3, 4},
+      {1, 2, 3, 4, 5},
       {std::numeric_limits<int64_t>::min(),
+       std::numeric_limits<int64_t>::min(),
        std::numeric_limits<int32_t>::min(),
        std::numeric_limits<time_t>::min(),
        std::numeric_limits<int32_t>::min()},
       {std::numeric_limits<int64_t>::max(),
+       std::numeric_limits<int64_t>::max(),
        std::numeric_limits<int32_t>::max(),
        std::numeric_limits<time_t>::max(),
        std::numeric_limits<int32_t>::max()},
-       {0, 0, 0, 0},
-      {0x7fedcba9'87654321, 0x12345678, 0x2346789, 0x76543210}
+       {0, 0, 0, 0, 0},
+      {0x7fedcba9'87654321, 0x5a5a5a5a'5a5a5a5a, 0x12345678, 0x2346789, 0x76543210}
   };
   for (const auto& entry : entries) {
     std::stringstream ss;
@@ -86,12 +89,12 @@
 
 TEST(OdrCompilationLogEntry, ReadMultiple) {
   std::stringstream ss;
-  ss << "1 2 3 4\n5 6 7 8\n";
+  ss << "0 1 2 3 4\n5 6 7 8 9\n";
 
   OdrCompilationLogEntry entry0, entry1;
   ss >> entry0 >> entry1;
-  ASSERT_EQ(entry0, (OdrCompilationLogEntry{1, 2, 3, 4}));
-  ASSERT_EQ(entry1, (OdrCompilationLogEntry{5, 6, 7, 8}));
+  ASSERT_EQ(entry0, (OdrCompilationLogEntry{0, 1, 2, 3, 4}));
+  ASSERT_EQ(entry1, (OdrCompilationLogEntry{5, 6, 7, 8, 9}));
 
   ASSERT_FALSE(ss.fail());
   ASSERT_FALSE(ss.bad());
@@ -100,14 +103,24 @@
 TEST(OdrCompilationLog, ShouldAttemptCompile) {
   OdrCompilationLog ocl(/*compilation_log_path=*/nullptr);
 
-  ASSERT_TRUE(ocl.ShouldAttemptCompile(1, OdrMetrics::Trigger::kMissingArtifacts, 0));
+  ASSERT_TRUE(ocl.ShouldAttemptCompile(
+      /*apex_version=*/1, /*last_update_millis=*/762, OdrMetrics::Trigger::kMissingArtifacts, 0));
 
   ocl.Log(
-      /*apex_version=*/1, OdrMetrics::Trigger::kApexVersionMismatch, ExitCode::kCompilationSuccess);
-  ASSERT_TRUE(ocl.ShouldAttemptCompile(2, OdrMetrics::Trigger::kApexVersionMismatch));
-  ASSERT_FALSE(ocl.ShouldAttemptCompile(1, OdrMetrics::Trigger::kApexVersionMismatch));
-  ASSERT_TRUE(ocl.ShouldAttemptCompile(1, OdrMetrics::Trigger::kDexFilesChanged));
-  ASSERT_FALSE(ocl.ShouldAttemptCompile(1, OdrMetrics::Trigger::kUnknown));
+      /*apex_version=*/1,
+      /*last_update_millis=*/762,
+      OdrMetrics::Trigger::kApexVersionMismatch,
+      ExitCode::kCompilationSuccess);
+  ASSERT_TRUE(ocl.ShouldAttemptCompile(
+      /*apex_version=*/2, /*last_update_millis=*/762, OdrMetrics::Trigger::kApexVersionMismatch));
+  ASSERT_TRUE(ocl.ShouldAttemptCompile(
+      /*apex_version=*/1, /*last_update_millis=*/10000, OdrMetrics::Trigger::kApexVersionMismatch));
+  ASSERT_FALSE(ocl.ShouldAttemptCompile(
+      /*apex_version=*/1, /*last_update_millis=*/762, OdrMetrics::Trigger::kApexVersionMismatch));
+  ASSERT_TRUE(ocl.ShouldAttemptCompile(
+      /*apex_version=*/1, /*last_update_millis=*/762, OdrMetrics::Trigger::kDexFilesChanged));
+  ASSERT_FALSE(ocl.ShouldAttemptCompile(
+      /*apex_version=*/1, /*last_update_millis=*/762, OdrMetrics::Trigger::kUnknown));
 }
 
 TEST(OdrCompilationLog, BackOffNoHistory) {
@@ -117,63 +130,81 @@
   OdrCompilationLog ocl(/*compilation_log_path=*/nullptr);
 
   ASSERT_TRUE(ocl.ShouldAttemptCompile(
-      /*apex_version=*/1, OdrMetrics::Trigger::kApexVersionMismatch, start_time));
+      /*apex_version=*/1,
+      /*last_update_millis=*/0,
+      OdrMetrics::Trigger::kApexVersionMismatch,
+      start_time));
 
   // Start log
   ocl.Log(/*apex_version=*/1,
+          /*last_update_millis=*/0,
           OdrMetrics::Trigger::kApexVersionMismatch,
           start_time,
           ExitCode::kCompilationFailed);
   ASSERT_FALSE(ocl.ShouldAttemptCompile(
-      /*apex_version=*/1, OdrMetrics::Trigger::kApexVersionMismatch, start_time));
+      /*apex_version=*/1,
+      /*last_update_millis=*/0,
+      OdrMetrics::Trigger::kApexVersionMismatch,
+      start_time));
   ASSERT_FALSE(ocl.ShouldAttemptCompile(
       /*apex_version=*/1,
+      /*last_update_millis=*/0,
       OdrMetrics::Trigger::kApexVersionMismatch,
       start_time + kSecondsPerDay / 2));
   ASSERT_TRUE(ocl.ShouldAttemptCompile(
       /*apex_version=*/1,
+      /*last_update_millis=*/0,
       OdrMetrics::Trigger::kApexVersionMismatch,
       start_time + kSecondsPerDay));
 
   // Add one more log entry
   ocl.Log(/*apex_version=*/1,
+          /*last_update_millis=*/0,
           OdrMetrics::Trigger::kApexVersionMismatch,
           start_time,
           ExitCode::kCompilationFailed);
   ASSERT_FALSE(ocl.ShouldAttemptCompile(
       /*apex_version=*/1,
+      /*last_update_millis=*/0,
       OdrMetrics::Trigger::kApexVersionMismatch,
       start_time + kSecondsPerDay));
   ASSERT_TRUE(ocl.ShouldAttemptCompile(
       /*apex_version=*/1,
+      /*last_update_millis=*/0,
       OdrMetrics::Trigger::kApexVersionMismatch,
       start_time + 2 * kSecondsPerDay));
 
   // One more.
   ocl.Log(/*apex_version=*/1,
+          /*last_update_millis=*/0,
           OdrMetrics::Trigger::kApexVersionMismatch,
           start_time,
           ExitCode::kCompilationFailed);
   ASSERT_FALSE(ocl.ShouldAttemptCompile(
       /*apex_version=*/1,
+      /*last_update_millis=*/0,
       OdrMetrics::Trigger::kApexVersionMismatch,
       start_time + 3 * kSecondsPerDay));
   ASSERT_TRUE(ocl.ShouldAttemptCompile(
       /*apex_version=*/1,
+      /*last_update_millis=*/0,
       OdrMetrics::Trigger::kApexVersionMismatch,
       start_time + 4 * kSecondsPerDay));
 
   // And one for the road.
   ocl.Log(/*apex_version=*/1,
+          /*last_update_millis=*/0,
           OdrMetrics::Trigger::kApexVersionMismatch,
           start_time,
           ExitCode::kCompilationFailed);
   ASSERT_FALSE(ocl.ShouldAttemptCompile(
       /*apex_version=*/1,
+      /*last_update_millis=*/0,
       OdrMetrics::Trigger::kApexVersionMismatch,
       start_time + 7 * kSecondsPerDay));
   ASSERT_TRUE(ocl.ShouldAttemptCompile(
       /*apex_version=*/1,
+      /*last_update_millis=*/0,
       OdrMetrics::Trigger::kApexVersionMismatch,
       start_time + 8 * kSecondsPerDay));
 }
@@ -186,31 +217,40 @@
 
   // Start log with a successful entry.
   ocl.Log(/*apex_version=*/1,
+          /*last_update_millis=*/0,
           OdrMetrics::Trigger::kApexVersionMismatch,
           start_time,
           ExitCode::kCompilationSuccess);
   ASSERT_FALSE(ocl.ShouldAttemptCompile(
-      /*apex_version=*/1, OdrMetrics::Trigger::kApexVersionMismatch, start_time));
+      /*apex_version=*/1,
+      /*last_update_millis=*/0,
+      OdrMetrics::Trigger::kApexVersionMismatch,
+      start_time));
   ASSERT_FALSE(ocl.ShouldAttemptCompile(
       /*apex_version=*/1,
+      /*last_update_millis=*/0,
       OdrMetrics::Trigger::kApexVersionMismatch,
       start_time + kSecondsPerDay / 4));
   ASSERT_TRUE(ocl.ShouldAttemptCompile(
       /*apex_version=*/1,
+      /*last_update_millis=*/0,
       OdrMetrics::Trigger::kApexVersionMismatch,
       start_time + kSecondsPerDay / 2));
 
-    // Add a log entry for a failed compilation.
+  // Add a log entry for a failed compilation.
   ocl.Log(/*apex_version=*/1,
+          /*last_update_millis=*/0,
           OdrMetrics::Trigger::kApexVersionMismatch,
           start_time,
           ExitCode::kCompilationFailed);
   ASSERT_FALSE(ocl.ShouldAttemptCompile(
       /*apex_version=*/1,
+      /*last_update_millis=*/0,
       OdrMetrics::Trigger::kApexVersionMismatch,
       start_time + kSecondsPerDay / 2));
   ASSERT_TRUE(ocl.ShouldAttemptCompile(
       /*apex_version=*/1,
+      /*last_update_millis=*/0,
       OdrMetrics::Trigger::kApexVersionMismatch,
       start_time + kSecondsPerDay));
 }
@@ -219,18 +259,19 @@
   OdrCompilationLog ocl(/*compilation_log_path=*/nullptr);
 
   std::vector<OdrCompilationLogEntry> entries = {
-    { 0, 1, 2, 3 },
-    { 1, 2, 3, 4 },
-    { 2, 3, 4, 5 },
-    { 3, 4, 5, 6 },
-    { 4, 5, 6, 7 },
-    { 5, 6, 7, 8 },
-    { 6, 7, 8, 9 }
+    { 0, 1, 2, 3, 4 },
+    { 1, 2, 3, 4, 5 },
+    { 2, 3, 4, 5, 6 },
+    { 3, 4, 5, 6, 7 },
+    { 4, 5, 6, 7, 8 },
+    { 5, 6, 7, 8, 9 },
+    { 6, 7, 8, 9, 10 }
   };
 
   for (size_t i = 0; i < entries.size(); ++i) {
     OdrCompilationLogEntry& e = entries[i];
     ocl.Log(e.apex_version,
+            e.last_update_millis,
             static_cast<OdrMetrics::Trigger>(e.trigger),
             e.when,
             static_cast<ExitCode>(e.exit_code));
@@ -251,13 +292,13 @@
 
 TEST_F(OdrCompilationLogTest, LogReadWrite) {
   std::vector<OdrCompilationLogEntry> entries = {
-    { 0, 1, 2, 3 },
-    { 1, 2, 3, 4 },
-    { 2, 3, 4, 5 },
-    { 3, 4, 5, 6 },
-    { 4, 5, 6, 7 },
-    { 5, 6, 7, 8 },
-    { 6, 7, 8, 9 }
+    { 0, 1, 2, 3, 4 },
+    { 1, 2, 3, 4, 5 },
+    { 2, 3, 4, 5, 6 },
+    { 3, 4, 5, 6, 7 },
+    { 4, 5, 6, 7, 8 },
+    { 5, 6, 7, 8, 9 },
+    { 6, 7, 8, 9, 10 }
   };
 
   ScratchFile scratch_file;
@@ -268,6 +309,7 @@
       OdrCompilationLog ocl(scratch_file.GetFilename().c_str());
       OdrCompilationLogEntry& e = entries[i];
       ocl.Log(e.apex_version,
+              e.last_update_millis,
               static_cast<OdrMetrics::Trigger>(e.trigger),
               e.when,
               static_cast<ExitCode>(e.exit_code));
@@ -303,7 +345,10 @@
     OdrCompilationLog ocl(log_path);
 
     ASSERT_TRUE(ocl.ShouldAttemptCompile(
-        /*apex_version=*/1, OdrMetrics::Trigger::kApexVersionMismatch, start_time));
+        /*apex_version=*/1,
+        /*last_update_millis=*/0,
+        OdrMetrics::Trigger::kApexVersionMismatch,
+        start_time));
   }
 
   {
@@ -311,6 +356,7 @@
 
     // Start log
     ocl.Log(/*apex_version=*/1,
+            /*last_update_millis=*/0,
             OdrMetrics::Trigger::kApexVersionMismatch,
             start_time,
             ExitCode::kCompilationFailed);
@@ -319,13 +365,18 @@
   {
     OdrCompilationLog ocl(log_path);
     ASSERT_FALSE(ocl.ShouldAttemptCompile(
-        /*apex_version=*/1, OdrMetrics::Trigger::kApexVersionMismatch, start_time));
+        /*apex_version=*/1,
+        /*last_update_millis=*/0,
+        OdrMetrics::Trigger::kApexVersionMismatch,
+        start_time));
     ASSERT_FALSE(ocl.ShouldAttemptCompile(
         /*apex_version=*/1,
+        /*last_update_millis=*/0,
         OdrMetrics::Trigger::kApexVersionMismatch,
         start_time + kSecondsPerDay / 2));
     ASSERT_TRUE(ocl.ShouldAttemptCompile(
         /*apex_version=*/1,
+        /*last_update_millis=*/0,
         OdrMetrics::Trigger::kApexVersionMismatch,
         start_time + kSecondsPerDay));
   }
@@ -334,6 +385,7 @@
     // Add one more log entry
     OdrCompilationLog ocl(log_path);
     ocl.Log(/*apex_version=*/1,
+            /*last_update_millis=*/0,
             OdrMetrics::Trigger::kApexVersionMismatch,
             start_time,
             ExitCode::kCompilationFailed);
@@ -344,10 +396,12 @@
 
     ASSERT_FALSE(ocl.ShouldAttemptCompile(
         /*apex_version=*/1,
+        /*last_update_millis=*/0,
         OdrMetrics::Trigger::kApexVersionMismatch,
         start_time + kSecondsPerDay));
     ASSERT_TRUE(ocl.ShouldAttemptCompile(
         /*apex_version=*/1,
+        /*last_update_millis=*/0,
         OdrMetrics::Trigger::kApexVersionMismatch,
         start_time + 2 * kSecondsPerDay));
   }
@@ -356,27 +410,7 @@
     // One more log entry.
     OdrCompilationLog ocl(log_path);
     ocl.Log(/*apex_version=*/1,
-          OdrMetrics::Trigger::kApexVersionMismatch,
-          start_time,
-          ExitCode::kCompilationFailed);
-  }
-
-  {
-    OdrCompilationLog ocl(log_path);
-    ASSERT_FALSE(ocl.ShouldAttemptCompile(
-        /*apex_version=*/1,
-        OdrMetrics::Trigger::kApexVersionMismatch,
-        start_time + 3 * kSecondsPerDay));
-    ASSERT_TRUE(ocl.ShouldAttemptCompile(
-        /*apex_version=*/1,
-        OdrMetrics::Trigger::kApexVersionMismatch,
-        start_time + 4 * kSecondsPerDay));
-  }
-
-  {
-    // And one for the road.
-    OdrCompilationLog ocl(log_path);
-    ocl.Log(/*apex_version=*/1,
+            /*last_update_millis=*/0,
             OdrMetrics::Trigger::kApexVersionMismatch,
             start_time,
             ExitCode::kCompilationFailed);
@@ -386,14 +420,125 @@
     OdrCompilationLog ocl(log_path);
     ASSERT_FALSE(ocl.ShouldAttemptCompile(
         /*apex_version=*/1,
+        /*last_update_millis=*/0,
+        OdrMetrics::Trigger::kApexVersionMismatch,
+        start_time + 3 * kSecondsPerDay));
+    ASSERT_TRUE(ocl.ShouldAttemptCompile(
+        /*apex_version=*/1,
+        /*last_update_millis=*/0,
+        OdrMetrics::Trigger::kApexVersionMismatch,
+        start_time + 4 * kSecondsPerDay));
+  }
+
+  {
+    // And one for the road.
+    OdrCompilationLog ocl(log_path);
+    ocl.Log(/*apex_version=*/1,
+            /*last_update_millis=*/0,
+            OdrMetrics::Trigger::kApexVersionMismatch,
+            start_time,
+            ExitCode::kCompilationFailed);
+  }
+
+  {
+    OdrCompilationLog ocl(log_path);
+    ASSERT_FALSE(ocl.ShouldAttemptCompile(
+        /*apex_version=*/1,
+        /*last_update_millis=*/0,
         OdrMetrics::Trigger::kApexVersionMismatch,
         start_time + 7 * kSecondsPerDay));
     ASSERT_TRUE(ocl.ShouldAttemptCompile(
         /*apex_version=*/1,
+        /*last_update_millis=*/0,
         OdrMetrics::Trigger::kApexVersionMismatch,
         start_time + 8 * kSecondsPerDay));
   }
 }
 
+TEST(OdrCompilationLog, LastUpdateMillisChangeTriggersCompilation) {
+  time_t start_time;
+  time(&start_time);
+
+  OdrCompilationLog ocl(/*compilation_log_path=*/nullptr);
+
+  for (int64_t last_update_millis = 0; last_update_millis < 10000; last_update_millis += 1000) {
+    static const int64_t kApexVersion = 19999;
+    ASSERT_TRUE(ocl.ShouldAttemptCompile(
+        kApexVersion, last_update_millis, OdrMetrics::Trigger::kApexVersionMismatch, start_time));
+    ocl.Log(kApexVersion,
+            last_update_millis,
+            OdrMetrics::Trigger::kApexVersionMismatch,
+            start_time,
+            ExitCode::kCompilationSuccess);
+    ASSERT_FALSE(ocl.ShouldAttemptCompile(kApexVersion,
+                                          last_update_millis,
+                                          OdrMetrics::Trigger::kApexVersionMismatch,
+                                          start_time + 1));
+  }
+}
+
+TEST(OdrCompilationLog, ApexVersionChangeTriggersCompilation) {
+  time_t start_time;
+  time(&start_time);
+
+  OdrCompilationLog ocl(/*compilation_log_path=*/nullptr);
+
+  for (int64_t apex_version = 0; apex_version < 10000; apex_version += 1000) {
+    static const int64_t kLastUpdateMillis = 777;
+    ASSERT_TRUE(ocl.ShouldAttemptCompile(apex_version,
+                                         kLastUpdateMillis,
+                                         OdrMetrics::Trigger::kApexVersionMismatch,
+                                         start_time + 8 * kSecondsPerDay));
+    ocl.Log(apex_version,
+            kLastUpdateMillis,
+            OdrMetrics::Trigger::kApexVersionMismatch,
+            start_time,
+            ExitCode::kCompilationSuccess);
+    ASSERT_FALSE(ocl.ShouldAttemptCompile(apex_version,
+                                          kLastUpdateMillis,
+                                          OdrMetrics::Trigger::kApexVersionMismatch,
+                                          start_time + 1));
+  }
+}
+
+TEST_F(OdrCompilationLogTest, NewLogVersionTriggersCompilation) {
+  static const int64_t kApexVersion = 1066;
+  static const int64_t kLastUpdateMillis = 777;
+  time_t start_time;
+  time(&start_time);
+
+  ScratchFile scratch_file;
+  scratch_file.Close();
+
+  // Generate a compilation log.
+  {
+    OdrCompilationLog ocl(scratch_file.GetFilename().c_str());
+    for (size_t i = 0; i < OdrCompilationLog::kMaxLoggedEntries; ++i) {
+      ocl.Log(kApexVersion,
+              kLastUpdateMillis,
+              OdrMetrics::Trigger::kApexVersionMismatch,
+              start_time,
+              ExitCode::kCompilationSuccess);
+      ASSERT_FALSE(ocl.ShouldAttemptCompile(
+          kApexVersion, kLastUpdateMillis, OdrMetrics::Trigger::kApexVersionMismatch, start_time));
+    }
+  }
+
+  // Replace version string in the compilation log.
+  std::string log_text;
+  ASSERT_TRUE(android::base::ReadFileToString(scratch_file.GetFilename(), &log_text));
+  std::string new_log_version = std::string(OdrCompilationLog::kLogVersion) + "a";
+  log_text.replace(0, new_log_version.size() - 1, new_log_version);
+  ASSERT_TRUE(android::base::WriteStringToFile(log_text, scratch_file.GetFilename()));
+
+  // Read log with updated version entry, check it is treated as out-of-date.
+  {
+    OdrCompilationLog ocl(scratch_file.GetFilename().c_str());
+    ASSERT_TRUE(ocl.ShouldAttemptCompile(
+        kApexVersion, kLastUpdateMillis, OdrMetrics::Trigger::kApexVersionMismatch, start_time));
+    ASSERT_EQ(0u, ocl.NumberOfEntries());
+  }
+}
+
 }  // namespace odrefresh
 }  // namespace art
diff --git a/odrefresh/odr_metrics.h b/odrefresh/odr_metrics.h
index 5ff9df2..cd80bef 100644
--- a/odrefresh/odr_metrics.h
+++ b/odrefresh/odr_metrics.h
@@ -75,7 +75,7 @@
   ~OdrMetrics();
 
   // Gets the ART APEX that metrics are being collected on behalf of.
-  int64_t GetApexVersion() const {
+  int64_t GetArtApexVersion() const {
     return art_apex_version_;
   }
 
@@ -84,6 +84,16 @@
     art_apex_version_ = version;
   }
 
+  // Gets the ART APEX last update time in milliseconds.
+  int64_t GetArtApexLastUpdateMillis() const {
+    return art_apex_last_update_millis_;
+  }
+
+  // Sets the ART APEX last update time in milliseconds.
+  void SetArtApexLastUpdateMillis(int64_t last_update_millis) {
+    art_apex_last_update_millis_ = last_update_millis;
+  }
+
   // Gets the trigger for metrics collection. The trigger is the reason why odrefresh considers
   // compilation necessary.
   Trigger GetTrigger() const {
@@ -122,6 +132,7 @@
   const std::string metrics_file_;
 
   int64_t art_apex_version_ = 0;
+  int64_t art_apex_last_update_millis_ = 0;
   std::optional<Trigger> trigger_ = {};  // metrics are only logged if compilation is triggered.
   Stage stage_ = Stage::kUnknown;
   Status status_ = Status::kUnknown;
diff --git a/odrefresh/odrefresh.cc b/odrefresh/odrefresh.cc
index cccf2b3..2cef50d 100644
--- a/odrefresh/odrefresh.cc
+++ b/odrefresh/odrefresh.cc
@@ -360,7 +360,10 @@
       LOG(ERROR) << "Could not update " << QuotePath(cache_info_filename_) << " : no ART Apex info";
       return {};
     }
-    return art_apex::ArtModuleInfo{info->getVersionCode(), info->getVersionName()};
+    // The lastUpdateMillis is an addition to ApexInfoList.xsd to support samegrade installs.
+    int64_t last_update_millis = info->hasLastUpdateMillis() ? info->getLastUpdateMillis() : 0;
+    return art_apex::ArtModuleInfo{
+        info->getVersionCode(), info->getVersionName(), last_update_millis};
   }
 
   bool CheckComponents(const std::vector<art_apex::Component>& expected_components,
@@ -498,6 +501,21 @@
       return cleanup_return(ExitCode::kCompilationRequired);
     }
 
+    // Generate current module info for the current ART APEX.
+    const auto current_info = GenerateArtModuleInfo();
+    if (!current_info.has_value()) {
+      // This should never happen, further up-to-date checks are not possible if it does.
+      LOG(ERROR) << "Failed to generate cache provenance.";
+      metrics.SetTrigger(OdrMetrics::Trigger::kUnknown);
+      return cleanup_return(ExitCode::kCompilationRequired);
+    }
+
+    // Record ART APEX version for metrics reporting.
+    metrics.SetArtApexVersion(current_info->getVersionCode());
+
+    // Record ART APEX last update milliseconds (used in compilation log).
+    metrics.SetArtApexLastUpdateMillis(current_info->getLastUpdateMillis());
+
     if (apex_info->getIsFactory()) {
       // Remove any artifacts on /data as they are not necessary and no compilation is necessary.
       LOG(INFO) << "Factory APEX mounted.";
@@ -521,18 +539,6 @@
       return cleanup_return(ExitCode::kCompilationRequired);
     }
 
-    // Generate current module info for the current ART APEX.
-    const auto current_info = GenerateArtModuleInfo();
-    if (!current_info.has_value()) {
-      // This should never happen, further up-to-date checks are not possible if it does.
-      LOG(ERROR) << "Failed to generate cache provenance.";
-      metrics.SetTrigger(OdrMetrics::Trigger::kUnknown);
-      return cleanup_return(ExitCode::kCompilationRequired);
-    }
-
-    // Record ART Apex version for metrics reporting.
-    metrics.SetArtApexVersion(current_info->getVersionCode());
-
     // Check whether the current cache ART module info differs from the current ART module info.
     // Always check APEX version.
     const auto cached_info = cache_info->getFirstArtModuleInfo();
@@ -546,13 +552,25 @@
     }
 
     if (cached_info->getVersionName() != current_info->getVersionName()) {
-      LOG(INFO) << "ART APEX version code mismatch ("
+      LOG(INFO) << "ART APEX version name mismatch ("
                 << cached_info->getVersionName()
                 << " != " << current_info->getVersionName() << ").";
       metrics.SetTrigger(OdrMetrics::Trigger::kApexVersionMismatch);
       return cleanup_return(ExitCode::kCompilationRequired);
     }
 
+    // Check lastUpdateMillis for samegrade installs. If `cached_info` is missing lastUpdateMillis
+    // then it is not current with the schema used by this binary so treat it as a samegrade
+    // update. Otherwise check whether the lastUpdateMillis changed.
+    if (!cached_info->hasLastUpdateMillis() ||
+        cached_info->getLastUpdateMillis() != current_info->getLastUpdateMillis()) {
+      LOG(INFO) << "ART APEX last update time mismatch ("
+                << cached_info->getLastUpdateMillis()
+                << " != " << current_info->getLastUpdateMillis() << ").";
+      metrics.SetTrigger(OdrMetrics::Trigger::kApexVersionMismatch);
+      return cleanup_return(ExitCode::kCompilationRequired);
+    }
+
     // Check boot class components.
     //
     // This checks the size and checksums of odrefresh compilable files on the DEX2OATBOOTCLASSPATH
@@ -1121,7 +1139,13 @@
       AddDex2OatInstructionSet(&args, isa);
       const std::string jar_name(android::base::Basename(jar));
       const std::string profile = Concatenate({GetAndroidRoot(), "/framework/", jar_name, ".prof"});
-      AddDex2OatProfileAndCompilerFilter(&args, profile);
+      std::string compiler_filter =
+          android::base::GetProperty("dalvik.vm.systemservercompilerfilter", "speed");
+      if (compiler_filter == "speed-profile") {
+        AddDex2OatProfileAndCompilerFilter(&args, profile);
+      } else {
+        args.emplace_back("--compiler-filter=" + compiler_filter);
+      }
 
       const std::string image_location = GetSystemServerImagePath(/*on_system=*/false, jar);
       const std::string install_location = android::base::Dirname(image_location);
@@ -1449,11 +1473,16 @@
           return exit_code;
         }
         OdrCompilationLog compilation_log;
-        if (!compilation_log.ShouldAttemptCompile(metrics.GetApexVersion(), metrics.GetTrigger())) {
+        if (!compilation_log.ShouldAttemptCompile(metrics.GetArtApexVersion(),
+                                                  metrics.GetArtApexLastUpdateMillis(),
+                                                  metrics.GetTrigger())) {
           return ExitCode::kOkay;
         }
         ExitCode compile_result = odr.Compile(metrics, /*force_compile=*/false);
-        compilation_log.Log(metrics.GetApexVersion(), metrics.GetTrigger(), compile_result);
+        compilation_log.Log(metrics.GetArtApexVersion(),
+                            metrics.GetArtApexLastUpdateMillis(),
+                            metrics.GetTrigger(),
+                            compile_result);
         return compile_result;
       } else if (action == "--force-compile") {
         return odr.Compile(metrics, /*force_compile=*/true);
diff --git a/odrefresh/schema/current.txt b/odrefresh/schema/current.txt
index ae10712..e6933f6 100644
--- a/odrefresh/schema/current.txt
+++ b/odrefresh/schema/current.txt
@@ -3,8 +3,10 @@
 
   public class ArtModuleInfo {
     ctor public ArtModuleInfo();
+    method public long getLastUpdateMillis();
     method public long getVersionCode();
     method public String getVersionName();
+    method public void setLastUpdateMillis(long);
     method public void setVersionCode(long);
     method public void setVersionName(String);
   }
diff --git a/openjdkjvm/OpenjdkJvm.cc b/openjdkjvm/OpenjdkJvm.cc
index d64086d..9b514af 100644
--- a/openjdkjvm/OpenjdkJvm.cc
+++ b/openjdkjvm/OpenjdkJvm.cc
@@ -423,7 +423,6 @@
   art::Thread* thread;
   {
     thread = thread_list->SuspendThreadByPeer(jthread,
-                                              true,
                                               art::SuspendReason::kInternal,
                                               &timed_out);
   }
diff --git a/openjdkjvmti/ti_thread.cc b/openjdkjvmti/ti_thread.cc
index bb8fa3b..a9a6ee8 100644
--- a/openjdkjvmti/ti_thread.cc
+++ b/openjdkjvmti/ti_thread.cc
@@ -898,7 +898,6 @@
     bool timeout = true;
     art::Thread* ret_target = art::Runtime::Current()->GetThreadList()->SuspendThreadByPeer(
         target_jthread,
-        /* request_suspension= */ true,
         art::SuspendReason::kForUserCode,
         &timeout);
     if (ret_target == nullptr && !timeout) {
diff --git a/profman/Android.bp b/profman/Android.bp
index 1b79713..917d79a 100644
--- a/profman/Android.bp
+++ b/profman/Android.bp
@@ -35,8 +35,7 @@
 
     target: {
         android: {
-            // Use the 32-bit version of profman on devices.
-            compile_multilib: "prefer32",
+            compile_multilib: "first",
             shared_libs: [
                 "libbase",
             ],
@@ -162,21 +161,46 @@
     },
 }
 
-art_cc_test {
-    name: "art_profman_tests",
-    defaults: [
-        "art_gtest_defaults",
-    ],
-    shared_libs: [
-        "libprofiled",
-    ],
+art_cc_defaults {
+    name: "art_profman_tests_defaults",
     data: [
         ":art-gtest-jars-ProfileTestMultiDex",
     ],
     srcs: ["profile_assistant_test.cc"],
+}
+
+// Version of ART gtest `art_profman_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_profman_tests",
+    defaults: [
+        "art_gtest_defaults",
+        "art_profman_tests_defaults",
+    ],
+    shared_libs: [
+        "libprofiled",
+    ],
     target: {
         host: {
             required: ["profmand"],
         },
     },
 }
+
+// Standalone version of ART gtest `art_profman_tests`, not bundled with the ART APEX on target.
+art_cc_test {
+    name: "art_standalone_profman_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_profman_tests_defaults",
+    ],
+    shared_libs: [
+        "libprofile",
+    ],
+    target: {
+        host: {
+            required: ["profman"],
+        },
+    },
+    test_config_template: "art_standalone_profman_tests.xml",
+}
diff --git a/profman/art_standalone_profman_tests.xml b/profman/art_standalone_profman_tests.xml
new file mode 100644
index 0000000..1710942
--- /dev/null
+++ b/profman/art_standalone_profman_tests.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Runs art_standalone_profman_tests (as root).">
+    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
+
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art_standalone_profman_tests->/data/local/tmp/art_standalone_profman_tests/art_standalone_profman_tests" />
+        <option name="append-bitness" value="true" />
+    </target_preparer>
+
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art-gtest-jars-ProfileTestMultiDex.jar->/data/local/tmp/art_standalone_profman_tests/art-gtest-jars-ProfileTestMultiDex.jar" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.GTest" >
+        <option name="native-test-device-path" value="/data/local/tmp/art_standalone_profman_tests" />
+        <option name="module-name" value="art_standalone_profman_tests" />
+        <option name="ld-library-path-32" value="/apex/com.android.art/lib" />
+        <option name="ld-library-path-64" value="/apex/com.android.art/lib64" />
+
+        <!-- The following tests from `art_standalone_profman_tests` are currently failing when
+             run as 32-bit on a 64-bit device, because they try to execute other system (64-bit)
+             processes but `LD_LIBRARY_PATH` is set to a directory of 32-bit libraries which make
+             them fail to dynamically link to the expected (64-bit) libraries.
+
+             TODO(b/162834439): Investigate these failures and re-enable these tests. -->
+        <option name="exclude-filter" value="ProfileAssistantTest.TestProfileRoundTrip" />
+        <option name="exclude-filter" value="ProfileAssistantTest.TestProfileRoundTripWithAnnotations" />
+    </test>
+
+    <!-- When this test is run in a Mainline context (e.g. with `mts-tradefed`), only enable it if
+         one of the Mainline modules below is present on the device used for testing. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
+        <!-- ART Mainline Module (internal version). -->
+        <option name="mainline-module-package-name" value="com.google.android.art" />
+        <!-- ART Mainline Module (external (AOSP) version). -->
+        <option name="mainline-module-package-name" value="com.android.art" />
+    </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
+</configuration>
diff --git a/runtime/Android.bp b/runtime/Android.bp
index c85d75a..e9343e7 100644
--- a/runtime/Android.bp
+++ b/runtime/Android.bp
@@ -71,6 +71,7 @@
     defaults: ["art_defaults"],
     host_supported: true,
     srcs: [
+        "app_info.cc",
         "aot_class_linker.cc",
         "art_field.cc",
         "sdk_checker.cc",
@@ -367,6 +368,7 @@
             },
         },
     },
+
     target: {
         android: {
             srcs: [
@@ -419,13 +421,15 @@
             ],
         },
     },
+
     generated_sources: [
         "art_operator_srcs",
     ],
     // asm_support_gen.h (used by asm_support.h) is generated with cpp-define-generator
     generated_headers: ["cpp-define-generator-asm-support"],
-    // export our headers so the libart-gtest targets can use it as well.
+    // export our headers so the libart(d)-gtest targets can use it as well.
     export_generated_headers: ["cpp-define-generator-asm-support"],
+
     header_libs: [
         "art_cmdlineparser_headers",
         "cpp-define-generator-definitions",
@@ -448,6 +452,20 @@
         "libunwindstack",
     ],
     static_libs: ["libodrstatslog"],
+
+    runtime_libs: [
+        // Libraries loaded at runtime. Exceptions:
+        // - libart(d)-compiler.so and libopenjdk(d).so cannot be listed here
+        //   due to cyclic dependency.
+        // - libicu_jni.so is only loaded to handle dependency order in VM
+        //   startup (see Runtime::InitNativeMethods), but its API is internal
+        //   to com.android.i18n and not used by ART/libcore. Therefore it's not
+        //   listed here to avoid visibility issues. Instead it's linked from
+        //   the ART module namespace through an entry in requireNativeLibs in
+        //   manifest-art.json.
+        "libjavacore",
+    ],
+
     export_include_dirs: ["."],
     // ART's macros.h depends on libbase's macros.h.
     // Note: runtime_options.h depends on cmdline. But we don't really want to export this
@@ -611,16 +629,13 @@
     ],
 }
 
-art_cc_library {
-    name: "libart-runtime-gtest",
-    defaults: ["libart-gtest-defaults"],
+art_cc_defaults {
+    name: "libart-runtime-gtest-defaults",
     srcs: [
         "common_runtime_test.cc",
         "dexopt_test.cc",
     ],
     shared_libs: [
-        "libartd",
-        "libartbase-art-gtest",
         "libbase",
         "libbacktrace",
     ],
@@ -629,11 +644,32 @@
     ],
 }
 
-art_cc_test {
-    name: "art_runtime_tests",
+art_cc_library {
+    name: "libart-runtime-gtest",
     defaults: [
-        "art_gtest_defaults",
+        "libart-runtime-gtest-defaults",
+        "libart-gtest-defaults",
     ],
+    shared_libs: [
+        "libart",
+        "libartbase-art-gtest",
+    ],
+}
+
+art_cc_library {
+    name: "libartd-runtime-gtest",
+    defaults: [
+        "libart-runtime-gtest-defaults",
+        "libartd-gtest-defaults",
+    ],
+    shared_libs: [
+        "libartd",
+        "libartbased-art-gtest",
+    ],
+}
+
+art_cc_defaults {
+    name: "art_runtime_tests_defaults",
     data: [
         ":art-gtest-jars-AllFields",
         ":art-gtest-jars-ErroneousA",
@@ -674,6 +710,7 @@
         ":art-gtest-jars-XandY",
     ],
     srcs: [
+        "app_info_test.cc",
         "arch/arch_test.cc",
         "arch/instruction_set_features_test.cc",
         "arch/memcmp16_test.cc",
@@ -725,6 +762,7 @@
         "jni/java_vm_ext_test.cc",
         "jni/jni_internal_test.cc",
         "method_handles_test.cc",
+        "metrics/reporter_test.cc",
         "mirror/dex_cache_test.cc",
         "mirror/method_type_test.cc",
         "mirror/object_test.cc",
@@ -748,11 +786,6 @@
         "verifier/method_verifier_test.cc",
         "verifier/reg_type_test.cc",
     ],
-    target: {
-        host: {
-            required: ["dex2oatd"],
-        },
-    },
     shared_libs: [
         "libbacktrace",
     ],
@@ -761,28 +794,88 @@
     ],
 }
 
+// Version of ART gtest `art_runtime_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
 art_cc_test {
-    name: "art_runtime_compiler_tests",
+    name: "art_runtime_tests",
     defaults: [
         "art_gtest_defaults",
-    ],
-    srcs: [
-        "reflection_test.cc",
-        "module_exclusion_test.cc",
+        "art_runtime_tests_defaults",
     ],
     target: {
         host: {
             required: ["dex2oatd"],
         },
     },
+}
+
+// Standalone version of ART gtest `art_runtime_tests`, not bundled with the ART APEX on target.
+art_cc_test {
+    name: "art_standalone_runtime_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_runtime_tests_defaults",
+    ],
+    target: {
+        host: {
+            required: ["dex2oat"],
+        },
+    },
+    // Some tests are currently failing (observed on
+    // `aosp_cf_x86_64_phone-userdebug`); use a special test configuration for
+    // `art_standalone_runtime_tests` to filter them out for now.
+    // TODO(b/162834439): Investigate these failures and re-enable these tests.
+    test_config: "art_standalone_runtime_tests.xml",
+}
+
+art_cc_defaults {
+    name: "art_runtime_compiler_tests_defaults",
+    srcs: [
+        "reflection_test.cc",
+        "module_exclusion_test.cc",
+    ],
     data: [
         ":art-gtest-jars-Main",
         ":art-gtest-jars-NonStaticLeafMethods",
         ":art-gtest-jars-StaticLeafMethods",
     ],
+}
+
+// Version of ART gtest `art_runtime_compiler_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
+art_cc_test {
+    name: "art_runtime_compiler_tests",
+    defaults: [
+        "art_gtest_defaults",
+        "art_runtime_compiler_tests_defaults",
+    ],
     shared_libs: [
         "libartd-compiler",
     ],
+    target: {
+        host: {
+            required: ["dex2oatd"],
+        },
+    },
+}
+
+// Standalone version of ART gtest `art_runtime_compiler_tests`, not bundled with the ART APEX on
+// target.
+art_cc_test {
+    name: "art_standalone_runtime_compiler_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_runtime_compiler_tests_defaults",
+    ],
+    shared_libs: [
+        "libart-compiler",
+    ],
+    target: {
+        host: {
+            required: ["dex2oat"],
+        },
+    },
+    test_config: "art_standalone_runtime_compiler_tests.xml",
 }
 
 cc_library_headers {
diff --git a/runtime/app_info.cc b/runtime/app_info.cc
new file mode 100644
index 0000000..c72951e
--- /dev/null
+++ b/runtime/app_info.cc
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <app_info.h>
+
+#include "base/logging.h"
+#include "base/mutex.h"
+#include "base/safe_map.h"
+#include "thread-inl.h"
+
+namespace art {
+
+static constexpr const char* kUnknownValue = "unknown";
+
+AppInfo::AppInfo()
+    : update_mutex_("app_info_update_mutex", LockLevel::kGenericBottomLock) {}
+
+// Converts VMRuntime.java constansts to a CodeType.
+AppInfo::CodeType AppInfo::FromVMRuntimeConstants(uint32_t code_type) {
+  switch (code_type) {
+    case kVMRuntimePrimaryApk : return CodeType::kPrimaryApk;
+    case kVMRuntimeSplitApk : return CodeType::kPrimaryApk;
+    case kVMRuntimeSecondaryDex : return CodeType::kSecondaryDex;
+    default:
+      LOG(WARNING) << "Unknown code type: " << code_type;
+      return CodeType::kUnknown;
+  }
+}
+
+static const char* CodeTypeName(AppInfo::CodeType code_type) {
+  switch (code_type) {
+    case AppInfo::CodeType::kPrimaryApk : return "primary-apk";
+    case AppInfo::CodeType::kSplitApk : return "split-apk";
+    case AppInfo::CodeType::kSecondaryDex : return "secondary-dex";
+    case AppInfo::CodeType::kUnknown : return "unknown";
+  }
+}
+
+void AppInfo::RegisterAppInfo(const std::string& package_name,
+                              const std::vector<std::string>& code_paths,
+                              const std::string& cur_profile_path,
+                              const std::string& ref_profile_path,
+                              AppInfo::CodeType code_type) {
+  MutexLock mu(Thread::Current(), update_mutex_);
+
+  package_name_ = package_name;
+
+  for (const std::string& code_path : code_paths) {
+    CodeLocationInfo& cli = registered_code_locations_.GetOrCreate(
+        code_path, []() { return CodeLocationInfo(); });
+    cli.cur_profile_path = cur_profile_path;
+    cli.ref_profile_path = ref_profile_path;
+    cli.code_type = code_type;
+
+    VLOG(startup) << "Registering code path. "
+        << "\npackage_name=" << package_name
+        << "\ncode_path=" << code_path
+        << "\ncode_type=" << CodeTypeName(code_type)
+        << "\ncur_profile=" << cur_profile_path
+        << "\nref_profile=" << ref_profile_path;
+  }
+}
+
+void AppInfo::RegisterOdexStatus(const std::string& code_path,
+                                 const std::string& compiler_filter,
+                                 const std::string& compilation_reason,
+                                 const std::string& odex_status) {
+  MutexLock mu(Thread::Current(), update_mutex_);
+
+  CodeLocationInfo& cli = registered_code_locations_.GetOrCreate(
+      code_path, []() { return CodeLocationInfo(); });
+  cli.compiler_filter = compiler_filter;
+  cli.compilation_reason = compilation_reason;
+  cli.odex_status = odex_status;
+
+  VLOG(startup) << "Registering odex status. "
+        << "\ncode_path=" << code_path
+        << "\ncompiler_filter=" << compiler_filter
+        << "\ncompilation_reason=" << compilation_reason
+        << "\nodex_status=" << odex_status;
+}
+
+void AppInfo::GetPrimaryApkOptimizationStatus(
+    std::string* out_compiler_filter,
+    std::string* out_compilation_reason) {
+  MutexLock mu(Thread::Current(), update_mutex_);
+
+  for (const auto& it : registered_code_locations_) {
+    const CodeLocationInfo& cli = it.second;
+    if (cli.code_type == CodeType::kPrimaryApk) {
+      *out_compiler_filter = cli.compiler_filter.value_or(kUnknownValue);
+      *out_compilation_reason = cli.compilation_reason.value_or(kUnknownValue);
+      return;
+    }
+  }
+  *out_compiler_filter = kUnknownValue;
+  *out_compilation_reason = kUnknownValue;
+}
+
+std::ostream& operator<<(std::ostream& os, AppInfo& rhs) {
+  MutexLock mu(Thread::Current(), rhs.update_mutex_);
+
+  os << "AppInfo for package_name=" << rhs.package_name_.value_or(kUnknownValue) << "\n";
+  for (const auto& it : rhs.registered_code_locations_) {
+    const std::string code_path = it.first;
+    const AppInfo::CodeLocationInfo& cli = it.second;
+
+    os << "\ncode_path=" << code_path
+        << "\ncode_type=" << CodeTypeName(cli.code_type)
+        << "\ncompiler_filter=" << cli.compiler_filter.value_or(kUnknownValue)
+        << "\ncompilation_reason=" << cli.compilation_reason.value_or(kUnknownValue)
+        << "\nodex_status=" << cli.odex_status.value_or(kUnknownValue)
+        << "\ncur_profile=" << cli.cur_profile_path.value_or(kUnknownValue)
+        << "\nref_profile=" << cli.ref_profile_path.value_or(kUnknownValue)
+        << "\n";
+  }
+  return os;
+}
+
+}  // namespace art
diff --git a/runtime/app_info.h b/runtime/app_info.h
new file mode 100644
index 0000000..68f2c58
--- /dev/null
+++ b/runtime/app_info.h
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ART_RUNTIME_APP_INFO_H_
+#define ART_RUNTIME_APP_INFO_H_
+
+#include <vector>
+
+#include "base/mutex.h"
+#include <base/safe_map.h>
+
+namespace art {
+
+// Constants used by VMRuntime.java to interface with the runtime.
+// We could get them from the well known class but it's simpler to
+// redefine them here.
+
+// VMRuntime.CODE_PATH_TYPE_PRIMARY_APK
+static constexpr int32_t kVMRuntimePrimaryApk = 1 << 0;
+// VMRuntime.CODE_PATH_TYPE_SPLIT_APK
+static constexpr int32_t kVMRuntimeSplitApk = 1 << 1;
+// VMRuntime.CODE_PATH_TYPE_SECONDARY_DEX
+static constexpr int32_t kVMRuntimeSecondaryDex = 1 << 2;
+
+// Encapsulates the information the runtime has about the application.
+//
+// The app's info comes from 2 channels:
+//   1) during class loading, when we load oat files.
+//   2) during app startup, when the framework calls VMRuntime#registerAppInfo.
+// In general the class loading event happens before VMRuntime#registerAppInfo.
+class AppInfo {
+ public:
+  enum class CodeType {
+    kUnknown,
+    kPrimaryApk,
+    kSplitApk,
+    kSecondaryDex,
+  };
+
+  // Converts VMRuntime.java constansts to a CodeType.
+  static CodeType FromVMRuntimeConstants(uint32_t code_type);
+
+  AppInfo();
+
+  // Registers the application code paths, types, and associated profiles.
+  void RegisterAppInfo(const std::string& package_name,
+                       const std::vector<std::string>& code_paths,
+                       const std::string& profile_output_filename,
+                       const std::string& ref_profile_filename,
+                       CodeType code_type);
+
+  // Registers the optimization status for single code path.
+  void RegisterOdexStatus(const std::string& code_path,
+                          const std::string& compiler_filter,
+                          const std::string& compilation_reason,
+                          const std::string& odex_status);
+
+  // Extracts the optimization status of the primary apk into the given arguments.
+  // If there are multiple primary APKs registed via RegisterAppInfo, the method
+  // will assign the status of the first APK, sorted by the location name.
+  //
+  // Assigns "unknown" if there is no primary apk or the optimization status was
+  // not set via RegisterOdexStatus,
+  void GetPrimaryApkOptimizationStatus(std::string* out_compiler_filter,
+                                       std::string* out_compilation_reason);
+
+ private:
+  // Encapsulates optimization information about a particular code location.
+  struct CodeLocationInfo {
+    // The type of the code location (primary, split, secondary, unknown).
+    CodeType code_type{CodeType::kUnknown};
+
+    // The compiler filter of the oat file. Note that this contains
+    // the output of OatFileAssistant#GetOptimizationStatus() which may
+    // contain values outside the scope of the CompilerFilter enum.
+    std::optional<std::string> compiler_filter;
+
+    // The compiler reason of the oat file. Note that this contains
+    // the output of OatFileAssistant#GetOptimizationStatus().
+    std::optional<std::string> compilation_reason;
+
+    // The odes status as produced by OatFileAssistant#GetOptimizationStatus().
+    std::optional<std::string> odex_status;
+
+    // The path to the primary profile if given.
+    std::optional<std::string> cur_profile_path;
+
+    // The path to the reference profile if given.
+    std::optional<std::string> ref_profile_path;
+  };
+
+  // The name of the package if set.
+  std::optional<std::string> package_name_ GUARDED_BY(update_mutex_);
+
+  // The registered code locations.
+  SafeMap<std::string, CodeLocationInfo> registered_code_locations_ GUARDED_BY(update_mutex_);
+
+  // Lock to touch the state ot the AppInfo object.
+  art::Mutex update_mutex_ BOTTOM_MUTEX_ACQUIRED_AFTER;
+
+  friend std::ostream& operator<<(std::ostream& os, AppInfo& rhs);
+};
+
+std::ostream& operator<<(std::ostream& os, AppInfo& rhs);
+
+}  // namespace art
+
+#endif  // ART_RUNTIME_APP_INFO_H_
diff --git a/runtime/app_info_test.cc b/runtime/app_info_test.cc
new file mode 100644
index 0000000..4a365de
--- /dev/null
+++ b/runtime/app_info_test.cc
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "app_info.h"
+
+#include <vector>
+
+#include "gtest/gtest.h"
+
+namespace art {
+
+TEST(AppInfoTest, RegisterAppInfo) {
+  AppInfo app_info;
+  app_info.RegisterAppInfo(
+      "package_name",
+      std::vector<std::string>({"code_location"}),
+      "",
+      "",
+      AppInfo::CodeType::kPrimaryApk);
+
+  std::string filter;
+  std::string reason;
+  app_info.GetPrimaryApkOptimizationStatus(&filter, &reason);
+
+  // Odex status was not registered.
+  ASSERT_EQ(filter, "unknown");
+  ASSERT_EQ(reason, "unknown");
+}
+
+TEST(AppInfoTest, RegisterAppInfoWithOdexStatus) {
+  AppInfo app_info;
+  app_info.RegisterAppInfo(
+      "package_name",
+      std::vector<std::string>({"code_location"}),
+      "",
+      "",
+      AppInfo::CodeType::kPrimaryApk);
+  app_info.RegisterOdexStatus(
+      "code_location",
+      "filter",
+      "reason",
+      "odex_status");
+
+  std::string filter;
+  std::string reason;
+  app_info.GetPrimaryApkOptimizationStatus(&filter, &reason);
+
+  ASSERT_EQ(filter, "filter");
+  ASSERT_EQ(reason, "reason");
+}
+
+TEST(AppInfoTest, RegisterAppInfoWithOdexStatusMultiplePrimary) {
+  AppInfo app_info;
+  app_info.RegisterOdexStatus(
+      "code_location",
+      "filter",
+      "reason",
+      "odex_status");
+  app_info.RegisterOdexStatus(
+      "code_location2",
+      "filter2",
+      "reason2",
+      "odex_status");
+  app_info.RegisterAppInfo(
+      "package_name",
+      std::vector<std::string>({"code_location"}),
+      "",
+      "",
+      AppInfo::CodeType::kPrimaryApk);
+
+  std::string filter;
+  std::string reason;
+  app_info.GetPrimaryApkOptimizationStatus(&filter, &reason);
+
+  // The optimization status should be the one of the first apk.
+  ASSERT_EQ(filter, "filter");
+  ASSERT_EQ(reason, "reason");
+}
+
+TEST(AppInfoTest, RegisterAppInfoWithOdexStatusNoPrimary) {
+  AppInfo app_info;
+
+  // Check that the status is not known in an empty app_info.
+  std::string filter;
+  std::string reason;
+  app_info.GetPrimaryApkOptimizationStatus(&filter, &reason);
+
+  // Register a split.s
+  app_info.RegisterAppInfo(
+      "package_name",
+      std::vector<std::string>({"code_location"}),
+      "",
+      "",
+      AppInfo::CodeType::kSplitApk);
+  app_info.RegisterOdexStatus(
+      "code_location",
+      "filter",
+      "reason",
+      "odex_status");
+
+
+  // The optimization status is unknown since we don't have primary apks.
+  app_info.GetPrimaryApkOptimizationStatus(&filter, &reason);
+  ASSERT_EQ(filter, "unknown");
+  ASSERT_EQ(reason, "unknown");
+}
+
+}  // namespace art
diff --git a/runtime/arch/arm/instruction_set_features_arm.cc b/runtime/arch/arm/instruction_set_features_arm.cc
index 43c66f8..6c46f28 100644
--- a/runtime/arch/arm/instruction_set_features_arm.cc
+++ b/runtime/arch/arm/instruction_set_features_arm.cc
@@ -64,6 +64,7 @@
       "exynos-m1",
       "kryo",
       "kryo385",
+      "kryo785",
   };
   bool has_armv8a = FindVariantInArray(arm_variants_with_armv8a,
                                        arraysize(arm_variants_with_armv8a),
diff --git a/runtime/arch/arm64/instruction_set_features_arm64.cc b/runtime/arch/arm64/instruction_set_features_arm64.cc
index 1e779f5..cef35fc 100644
--- a/runtime/arch/arm64/instruction_set_features_arm64.cc
+++ b/runtime/arch/arm64/instruction_set_features_arm64.cc
@@ -80,6 +80,7 @@
       "exynos-m3",
       "kryo",
       "kryo385",
+      "kryo785",
   };
 
   static const char* arm64_variants_with_lse[] = {
@@ -87,6 +88,7 @@
       "cortex-a75",
       "cortex-a76",
       "kryo385",
+      "kryo785",
   };
 
   static const char* arm64_variants_with_fp16[] = {
@@ -94,6 +96,7 @@
       "cortex-a75",
       "cortex-a76",
       "kryo385",
+      "kryo785",
   };
 
   static const char* arm64_variants_with_dotprod[] = {
@@ -140,6 +143,7 @@
         "kryo",
         "kryo300",
         "kryo385",
+        "kryo785",
     };
     if (!FindVariantInArray(arm64_known_variants, arraysize(arm64_known_variants), variant)) {
       std::ostringstream os;
diff --git a/runtime/art_standalone_runtime_compiler_tests.xml b/runtime/art_standalone_runtime_compiler_tests.xml
new file mode 100644
index 0000000..2bacda1
--- /dev/null
+++ b/runtime/art_standalone_runtime_compiler_tests.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Runs art_standalone_runtime_compiler_tests.">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art_standalone_runtime_compiler_tests->/data/local/tmp/art_standalone_runtime_compiler_tests/art_standalone_runtime_compiler_tests" />
+        <option name="append-bitness" value="true" />
+    </target_preparer>
+
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art-gtest-jars-Main.jar->/data/local/tmp/art_standalone_runtime_compiler_tests/art-gtest-jars-Main.jar" />
+        <option name="push" value="art-gtest-jars-NonStaticLeafMethods.jar->/data/local/tmp/art_standalone_runtime_compiler_tests/art-gtest-jars-NonStaticLeafMethods.jar" />
+        <option name="push" value="art-gtest-jars-StaticLeafMethods.jar->/data/local/tmp/art_standalone_runtime_compiler_tests/art-gtest-jars-StaticLeafMethods.jar" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.GTest" >
+        <option name="native-test-device-path" value="/data/local/tmp/art_standalone_runtime_compiler_tests" />
+        <option name="module-name" value="art_standalone_runtime_compiler_tests" />
+        <option name="ld-library-path-32" value="/apex/com.android.art/lib" />
+        <option name="ld-library-path-64" value="/apex/com.android.art/lib64" />
+    </test>
+
+    <!-- When this test is run in a Mainline context (e.g. with `mts-tradefed`), only enable it if
+         one of the Mainline modules below is present on the device used for testing. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
+        <!-- ART Mainline Module (internal version). -->
+        <option name="mainline-module-package-name" value="com.google.android.art" />
+        <!-- ART Mainline Module (external (AOSP) version). -->
+        <option name="mainline-module-package-name" value="com.android.art" />
+    </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
+</configuration>
diff --git a/runtime/art_standalone_runtime_tests.xml b/runtime/art_standalone_runtime_tests.xml
new file mode 100644
index 0000000..a46b7b4
--- /dev/null
+++ b/runtime/art_standalone_runtime_tests.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Runs art_standalone_runtime_tests.">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art_standalone_runtime_tests->/data/local/tmp/art_standalone_runtime_tests/art_standalone_runtime_tests" />
+        <option name="append-bitness" value="true" />
+    </target_preparer>
+
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="art-gtest-jars-AllFields.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-AllFields.jar" />
+        <option name="push" value="art-gtest-jars-ErroneousA.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-ErroneousA.jar" />
+        <option name="push" value="art-gtest-jars-ErroneousB.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-ErroneousB.jar" />
+        <option name="push" value="art-gtest-jars-ErroneousInit.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-ErroneousInit.jar" />
+        <option name="push" value="art-gtest-jars-Extension1.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-Extension1.jar" />
+        <option name="push" value="art-gtest-jars-Extension2.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-Extension2.jar" />
+        <option name="push" value="art-gtest-jars-ForClassLoaderA.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-ForClassLoaderA.jar" />
+        <option name="push" value="art-gtest-jars-ForClassLoaderB.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-ForClassLoaderB.jar" />
+        <option name="push" value="art-gtest-jars-ForClassLoaderC.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-ForClassLoaderC.jar" />
+        <option name="push" value="art-gtest-jars-ForClassLoaderD.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-ForClassLoaderD.jar" />
+        <option name="push" value="art-gtest-jars-HiddenApiSignatures.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-HiddenApiSignatures.jar" />
+        <option name="push" value="art-gtest-jars-IMTA.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-IMTA.jar" />
+        <option name="push" value="art-gtest-jars-IMTB.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-IMTB.jar" />
+        <option name="push" value="art-gtest-jars-Instrumentation.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-Instrumentation.jar" />
+        <option name="push" value="art-gtest-jars-Interfaces.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-Interfaces.jar" />
+        <option name="push" value="art-gtest-jars-LinkageTest.dex->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-LinkageTest.dex" />
+        <option name="push" value="art-gtest-jars-Main.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-Main.jar" />
+        <option name="push" value="art-gtest-jars-MainStripped.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-MainStripped.jar" />
+        <option name="push" value="art-gtest-jars-MainUncompressedAligned.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-MainUncompressedAligned.jar" />
+        <option name="push" value="art-gtest-jars-MethodTypes.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-MethodTypes.jar" />
+        <option name="push" value="art-gtest-jars-MultiDex.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-MultiDex.jar" />
+        <option name="push" value="art-gtest-jars-MultiDexModifiedSecondary.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-MultiDexModifiedSecondary.jar" />
+        <option name="push" value="art-gtest-jars-MultiDexUncompressedAligned.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-MultiDexUncompressedAligned.jar" />
+        <option name="push" value="art-gtest-jars-MyClass.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-MyClass.jar" />
+        <option name="push" value="art-gtest-jars-MyClassNatives.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-MyClassNatives.jar" />
+        <option name="push" value="art-gtest-jars-Nested.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-Nested.jar" />
+        <option name="push" value="art-gtest-jars-Packages.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-Packages.jar" />
+        <option name="push" value="art-gtest-jars-ProfileTestMultiDex.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-ProfileTestMultiDex.jar" />
+        <option name="push" value="art-gtest-jars-ProtoCompare.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-ProtoCompare.jar" />
+        <option name="push" value="art-gtest-jars-ProtoCompare2.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-ProtoCompare2.jar" />
+        <option name="push" value="art-gtest-jars-StaticLeafMethods.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-StaticLeafMethods.jar" />
+        <option name="push" value="art-gtest-jars-Statics.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-Statics.jar" />
+        <option name="push" value="art-gtest-jars-StaticsFromCode.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-StaticsFromCode.jar" />
+        <option name="push" value="art-gtest-jars-Transaction.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-Transaction.jar" />
+        <option name="push" value="art-gtest-jars-VerifierDeps.dex->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-VerifierDeps.dex" />
+        <option name="push" value="art-gtest-jars-VerifierDepsMulti.dex->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-VerifierDepsMulti.dex" />
+        <option name="push" value="art-gtest-jars-XandY.jar->/data/local/tmp/art_standalone_runtime_tests/art-gtest-jars-XandY.jar" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.GTest" >
+        <option name="native-test-device-path" value="/data/local/tmp/art_standalone_runtime_tests" />
+        <option name="module-name" value="art_standalone_runtime_tests" />
+        <option name="ld-library-path-32" value="/apex/com.android.art/lib" />
+        <option name="ld-library-path-64" value="/apex/com.android.art/lib64" />
+
+        <!-- The following tests from `art_standalone_runtime_tests` are currently failing
+             (observed on `aosp_cf_x86_64_phone-userdebug`).
+
+              TODO(b/162834439): Investigate these failures and re-enable these tests. -->
+        <option name="exclude-filter" value="HiddenApiTest.DexDomain_SystemDir" />
+        <option name="exclude-filter" value="HiddenApiTest.DexDomain_SystemDir_MultiDex" />
+        <option name="exclude-filter" value="HiddenApiTest.DexDomain_SystemFrameworkDir" />
+        <option name="exclude-filter" value="HiddenApiTest.DexDomain_SystemFrameworkDir_MultiDex" />
+        <option name="exclude-filter" value="HiddenApiTest.DexDomain_SystemSystemExtDir" />
+        <option name="exclude-filter" value="HiddenApiTest.DexDomain_SystemSystemExtDir_MultiDex" />
+        <option name="exclude-filter" value="HiddenApiTest.DexDomain_SystemSystemExtFrameworkDir" />
+        <option name="exclude-filter" value="HiddenApiTest.DexDomain_SystemSystemExtFrameworkDir_MultiDex" />
+        <option name="exclude-filter" value="JniInternalTest.CallVarArgMethodBadPrimitive" />
+        <option name="exclude-filter" value="OatFileAssistantTest.SystemFrameworkDir" />
+        <option name="exclude-filter" value="StubTest.Fields16" />
+        <option name="exclude-filter" value="StubTest.Fields32" />
+        <option name="exclude-filter" value="StubTest.Fields64" />
+        <option name="exclude-filter" value="StubTest.Fields8" />
+        <option name="exclude-filter" value="StubTest.FieldsObj" />
+        <option name="exclude-filter" value="SubtypeCheckInfoTest.IllegalValues" />
+
+        <!-- The following tests from `art_standalone_runtime_tests` are currently failing when
+             run as 32-bit on a 64-bit device, because they try to execute other system (64-bit)
+             processes but `LD_LIBRARY_PATH` is set to a directory of 32-bit libraries which make
+             them fail to dynamically link to the expected (64-bit) libraries.
+
+             TODO(b/162834439): Investigate these failures and re-enable these tests. -->
+        <option name="exclude-filter" value="ExecUtilsTest.EnvSnapshotDeletionsAreNotVisible" />
+        <option name="exclude-filter" value="ExecUtilsTest.ExecNoTimeout" />
+        <option name="exclude-filter" value="ExecUtilsTest.ExecSuccess" />
+        <option name="exclude-filter" value="ExecUtilsTest.ExecTimeout" />
+    </test>
+
+    <!-- When this test is run in a Mainline context (e.g. with `mts-tradefed`), only enable it if
+         one of the Mainline modules below is present on the device used for testing. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
+        <!-- ART Mainline Module (internal version). -->
+        <option name="mainline-module-package-name" value="com.google.android.art" />
+        <!-- ART Mainline Module (external (AOSP) version). -->
+        <option name="mainline-module-package-name" value="com.android.art" />
+    </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
+</configuration>
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index 5f4f0ab..e21a004 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -2621,6 +2621,26 @@
   return ClassPathEntry(nullptr, nullptr);
 }
 
+// Helper macro to make sure each class loader lookup call handles the case the
+// class loader is not recognized, or the lookup threw an exception.
+#define RETURN_IF_UNRECOGNIZED_OR_FOUND_OR_EXCEPTION(call_, result_, thread_) \
+do {                                                                          \
+  auto local_call = call_;                                                    \
+  if (!local_call) {                                                          \
+    return false;                                                             \
+  }                                                                           \
+  auto local_result = result_;                                                \
+  if (local_result != nullptr) {                                              \
+    return true;                                                              \
+  }                                                                           \
+  auto local_thread = thread_;                                                \
+  if (local_thread->IsExceptionPending()) {                                   \
+    /* Pending exception means there was an error other than */               \
+    /* ClassNotFound that must be returned to the caller. */                  \
+    return false;                                                             \
+  }                                                                           \
+} while (0)
+
 bool ClassLinker::FindClassInSharedLibraries(ScopedObjectAccessAlreadyRunnable& soa,
                                              Thread* self,
                                              const char* descriptor,
@@ -2640,12 +2660,10 @@
   MutableHandle<mirror::ClassLoader> temp_loader = hs.NewHandle<mirror::ClassLoader>(nullptr);
   for (auto loader : shared_libraries.Iterate<mirror::ClassLoader>()) {
     temp_loader.Assign(loader);
-    if (!FindClassInBaseDexClassLoader(soa, self, descriptor, hash, temp_loader, result)) {
-      return false;  // One of the shared libraries is not supported.
-    }
-    if (*result != nullptr) {
-      return true;  // Found the class up the chain.
-    }
+    RETURN_IF_UNRECOGNIZED_OR_FOUND_OR_EXCEPTION(
+        FindClassInBaseDexClassLoader(soa, self, descriptor, hash, temp_loader, result),
+        *result,
+        self);
   }
   return true;
 }
@@ -2658,7 +2676,8 @@
                                                 /*out*/ ObjPtr<mirror::Class>* result) {
   // Termination case: boot class loader.
   if (IsBootClassLoader(soa, class_loader.Get())) {
-    *result = FindClassInBootClassLoaderClassPath(self, descriptor, hash);
+    RETURN_IF_UNRECOGNIZED_OR_FOUND_OR_EXCEPTION(
+        FindClassInBootClassLoaderClassPath(self, descriptor, hash, result), *result, self);
     return true;
   }
 
@@ -2668,26 +2687,24 @@
     //    - shared libraries
     //    - class loader dex files
 
-    // Handles as RegisterDexFile may allocate dex caches (and cause thread suspension).
+    // Create a handle as RegisterDexFile may allocate dex caches (and cause thread suspension).
     StackHandleScope<1> hs(self);
     Handle<mirror::ClassLoader> h_parent(hs.NewHandle(class_loader->GetParent()));
-    if (!FindClassInBaseDexClassLoader(soa, self, descriptor, hash, h_parent, result)) {
-      return false;  // One of the parents is not supported.
-    }
-    if (*result != nullptr) {
-      return true;  // Found the class up the chain.
-    }
-
-    if (!FindClassInSharedLibraries(soa, self, descriptor, hash, class_loader, result)) {
-      return false;  // One of the shared library loader is not supported.
-    }
-    if (*result != nullptr) {
-      return true;  // Found the class in a shared library.
-    }
-
-    // Search the current class loader classpath.
-    *result = FindClassInBaseDexClassLoaderClassPath(soa, descriptor, hash, class_loader);
-    return !soa.Self()->IsExceptionPending();
+    RETURN_IF_UNRECOGNIZED_OR_FOUND_OR_EXCEPTION(
+        FindClassInBaseDexClassLoader(soa, self, descriptor, hash, h_parent, result),
+        *result,
+        self);
+    RETURN_IF_UNRECOGNIZED_OR_FOUND_OR_EXCEPTION(
+        FindClassInSharedLibraries(soa, self, descriptor, hash, class_loader, result),
+        *result,
+        self);
+    RETURN_IF_UNRECOGNIZED_OR_FOUND_OR_EXCEPTION(
+        FindClassInBaseDexClassLoaderClassPath(soa, descriptor, hash, class_loader, result),
+        *result,
+        self);
+    // We did not find a class, but the class loader chain was recognized, so we
+    // return true.
+    return true;
   }
 
   if (IsDelegateLastClassLoader(soa, class_loader)) {
@@ -2696,37 +2713,27 @@
     //    - shared libraries
     //    - class loader dex files
     //    - parent
-    *result = FindClassInBootClassLoaderClassPath(self, descriptor, hash);
-    if (*result != nullptr) {
-      return true;  // The class is part of the boot class path.
-    }
-    if (self->IsExceptionPending()) {
-      // Pending exception means there was an error other than ClassNotFound that must be returned
-      // to the caller.
-      return false;
-    }
+    RETURN_IF_UNRECOGNIZED_OR_FOUND_OR_EXCEPTION(
+        FindClassInBootClassLoaderClassPath(self, descriptor, hash, result), *result, self);
+    RETURN_IF_UNRECOGNIZED_OR_FOUND_OR_EXCEPTION(
+        FindClassInSharedLibraries(soa, self, descriptor, hash, class_loader, result),
+        *result,
+        self);
+    RETURN_IF_UNRECOGNIZED_OR_FOUND_OR_EXCEPTION(
+        FindClassInBaseDexClassLoaderClassPath(soa, descriptor, hash, class_loader, result),
+        *result,
+        self);
 
-    if (!FindClassInSharedLibraries(soa, self, descriptor, hash, class_loader, result)) {
-      return false;  // One of the shared library loader is not supported.
-    }
-    if (*result != nullptr) {
-      return true;  // Found the class in a shared library.
-    }
-
-    *result = FindClassInBaseDexClassLoaderClassPath(soa, descriptor, hash, class_loader);
-    if (*result != nullptr) {
-      return true;  // Found the class in the current class loader
-    }
-    if (self->IsExceptionPending()) {
-      // Pending exception means there was an error other than ClassNotFound that must be returned
-      // to the caller.
-      return false;
-    }
-
-    // Handles as RegisterDexFile may allocate dex caches (and cause thread suspension).
+    // Create a handle as RegisterDexFile may allocate dex caches (and cause thread suspension).
     StackHandleScope<1> hs(self);
     Handle<mirror::ClassLoader> h_parent(hs.NewHandle(class_loader->GetParent()));
-    return FindClassInBaseDexClassLoader(soa, self, descriptor, hash, h_parent, result);
+    RETURN_IF_UNRECOGNIZED_OR_FOUND_OR_EXCEPTION(
+        FindClassInBaseDexClassLoader(soa, self, descriptor, hash, h_parent, result),
+        *result,
+        self);
+    // We did not find a class, but the class loader chain was recognized, so we
+    // return true.
+    return true;
   }
 
   // Unsupported class loader.
@@ -2734,6 +2741,8 @@
   return false;
 }
 
+#undef RETURN_IF_UNRECOGNIZED_OR_FOUND_OR_EXCEPTION
+
 namespace {
 
 // Matches exceptions caught in DexFile.defineClass.
@@ -2761,36 +2770,38 @@
 
 // Finds the class in the boot class loader.
 // If the class is found the method returns the resolved class. Otherwise it returns null.
-ObjPtr<mirror::Class> ClassLinker::FindClassInBootClassLoaderClassPath(Thread* self,
-                                                                       const char* descriptor,
-                                                                       size_t hash) {
-  ObjPtr<mirror::Class> result = nullptr;
+bool ClassLinker::FindClassInBootClassLoaderClassPath(Thread* self,
+                                                      const char* descriptor,
+                                                      size_t hash,
+                                                      /*out*/ ObjPtr<mirror::Class>* result) {
   ClassPathEntry pair = FindInClassPath(descriptor, hash, boot_class_path_);
   if (pair.second != nullptr) {
     ObjPtr<mirror::Class> klass = LookupClass(self, descriptor, hash, nullptr);
     if (klass != nullptr) {
-      result = EnsureResolved(self, descriptor, klass);
+      *result = EnsureResolved(self, descriptor, klass);
     } else {
-      result = DefineClass(self,
-                           descriptor,
-                           hash,
-                           ScopedNullHandle<mirror::ClassLoader>(),
-                           *pair.first,
-                           *pair.second);
+      *result = DefineClass(self,
+                            descriptor,
+                            hash,
+                            ScopedNullHandle<mirror::ClassLoader>(),
+                            *pair.first,
+                            *pair.second);
     }
-    if (result == nullptr) {
+    if (*result == nullptr) {
       CHECK(self->IsExceptionPending()) << descriptor;
       FilterDexFileCaughtExceptions(self, this);
     }
   }
-  return result;
+  // The boot classloader is always a known lookup.
+  return true;
 }
 
-ObjPtr<mirror::Class> ClassLinker::FindClassInBaseDexClassLoaderClassPath(
+bool ClassLinker::FindClassInBaseDexClassLoaderClassPath(
     ScopedObjectAccessAlreadyRunnable& soa,
     const char* descriptor,
     size_t hash,
-    Handle<mirror::ClassLoader> class_loader) {
+    Handle<mirror::ClassLoader> class_loader,
+    /*out*/ ObjPtr<mirror::Class>* result) {
   DCHECK(IsPathOrDexClassLoader(soa, class_loader) ||
          IsInMemoryDexClassLoader(soa, class_loader) ||
          IsDelegateLastClassLoader(soa, class_loader))
@@ -2810,17 +2821,17 @@
   };
   VisitClassLoaderDexFiles(soa, class_loader, find_class_def);
 
-  ObjPtr<mirror::Class> klass = nullptr;
   if (class_def != nullptr) {
-    klass = DefineClass(soa.Self(), descriptor, hash, class_loader, *dex_file, *class_def);
-    if (UNLIKELY(klass == nullptr)) {
+    *result = DefineClass(soa.Self(), descriptor, hash, class_loader, *dex_file, *class_def);
+    if (UNLIKELY(*result == nullptr)) {
       CHECK(soa.Self()->IsExceptionPending()) << descriptor;
       FilterDexFileCaughtExceptions(soa.Self(), this);
     } else {
       DCHECK(!soa.Self()->IsExceptionPending());
     }
   }
-  return klass;
+  // A BaseDexClassLoader is always a known lookup.
+  return true;
 }
 
 ObjPtr<mirror::Class> ClassLinker::FindClass(Thread* self,
@@ -5049,7 +5060,9 @@
     Handle<mirror::ObjectArray<mirror::Class>> h_interfaces(
         hs.NewHandle(soa.Decode<mirror::ObjectArray<mirror::Class>>(interfaces)));
     if (!LinkClass(self, descriptor, temp_klass, h_interfaces, &klass)) {
-      mirror::Class::SetStatus(temp_klass, ClassStatus::kErrorUnresolved, self);
+      if (!temp_klass->IsErroneous()) {
+        mirror::Class::SetStatus(temp_klass, ClassStatus::kErrorUnresolved, self);
+      }
       return nullptr;
     }
   }
diff --git a/runtime/class_linker.h b/runtime/class_linker.h
index 547753a..5faf760 100644
--- a/runtime/class_linker.h
+++ b/runtime/class_linker.h
@@ -1024,20 +1024,26 @@
   // dex files and does not recurse into its parent.
   // The method checks that the provided class loader is either a PathClassLoader or a
   // DexClassLoader.
-  // If the class is found the method returns the resolved class. Otherwise it returns null.
-  ObjPtr<mirror::Class> FindClassInBaseDexClassLoaderClassPath(
+  // If the class is found the method updates `result`.
+  // The method always returns true, to notify to the caller a
+  // BaseDexClassLoader has a known lookup.
+  bool FindClassInBaseDexClassLoaderClassPath(
           ScopedObjectAccessAlreadyRunnable& soa,
           const char* descriptor,
           size_t hash,
-          Handle<mirror::ClassLoader> class_loader)
+          Handle<mirror::ClassLoader> class_loader,
+          /*out*/ ObjPtr<mirror::Class>* result)
       REQUIRES_SHARED(Locks::mutator_lock_)
       REQUIRES(!Locks::dex_lock_);
 
   // Finds the class in the boot class loader.
-  // If the class is found the method returns the resolved class. Otherwise it returns null.
-  ObjPtr<mirror::Class> FindClassInBootClassLoaderClassPath(Thread* self,
-                                                            const char* descriptor,
-                                                            size_t hash)
+  // If the class is found the method updates `result`.
+  // The method always returns true, to notify to the caller the
+  // boot class loader has a known lookup.
+  bool FindClassInBootClassLoaderClassPath(Thread* self,
+                                           const char* descriptor,
+                                           size_t hash,
+                                           /*out*/ ObjPtr<mirror::Class>* result)
       REQUIRES_SHARED(Locks::mutator_lock_)
       REQUIRES(!Locks::dex_lock_);
 
diff --git a/runtime/common_runtime_test.cc b/runtime/common_runtime_test.cc
index 0d21de1..b748e37 100644
--- a/runtime/common_runtime_test.cc
+++ b/runtime/common_runtime_test.cc
@@ -132,8 +132,10 @@
 
   FinalizeSetup();
 
-  // Ensure that we're really running with debug checks enabled.
-  CHECK(gSlowDebugTestFlag);
+  if (kIsDebugBuild) {
+    // Ensure that we're really running with debug checks enabled.
+    CHECK(gSlowDebugTestFlag);
+  }
 }
 
 void CommonRuntimeTestImpl::FinalizeSetup() {
diff --git a/runtime/gc/collector/concurrent_copying.cc b/runtime/gc/collector/concurrent_copying.cc
index f58224d..936b919 100644
--- a/runtime/gc/collector/concurrent_copying.cc
+++ b/runtime/gc/collector/concurrent_copying.cc
@@ -102,6 +102,8 @@
       copied_live_bytes_ratio_sum_(0.f),
       gc_count_(0),
       reclaimed_bytes_ratio_sum_(0.f),
+      cumulative_bytes_moved_(0),
+      cumulative_objects_moved_(0),
       skipped_blocks_lock_("concurrent copying bytes blocks lock", kMarkSweepMarkStackLock),
       measure_read_barrier_slow_path_(measure_read_barrier_slow_path),
       mark_from_read_barrier_measurements_(false),
@@ -154,14 +156,21 @@
   // Return type of these functions are different. And even though the base class
   // is same, using ternary operator complains.
   metrics::ArtMetrics* metrics = GetMetrics();
+  are_metrics_initialized_ = true;
   if (young_gen_) {
     gc_time_histogram_ = metrics->YoungGcCollectionTime();
     metrics_gc_count_ = metrics->YoungGcCount();
     gc_throughput_histogram_ = metrics->YoungGcThroughput();
+    gc_tracing_throughput_hist_ = metrics->YoungGcTracingThroughput();
+    gc_throughput_avg_ = metrics->YoungGcThroughputAvg();
+    gc_tracing_throughput_avg_ = metrics->YoungGcTracingThroughputAvg();
   } else {
     gc_time_histogram_ = metrics->FullGcCollectionTime();
     metrics_gc_count_ = metrics->FullGcCount();
     gc_throughput_histogram_ = metrics->FullGcThroughput();
+    gc_tracing_throughput_hist_ = metrics->FullGcTracingThroughput();
+    gc_throughput_avg_ = metrics->FullGcThroughputAvg();
+    gc_tracing_throughput_avg_ = metrics->FullGcTracingThroughputAvg();
   }
 }
 
@@ -401,6 +410,7 @@
   objects_moved_.store(0, std::memory_order_relaxed);
   bytes_moved_gc_thread_ = 0;
   objects_moved_gc_thread_ = 0;
+  bytes_scanned_ = 0;
   GcCause gc_cause = GetCurrentIteration()->GetGcCause();
 
   force_evacuate_all_ = false;
@@ -1620,11 +1630,16 @@
     // for the last time before transitioning to the shared mark stack mode, which would process new
     // refs that may have been concurrently pushed onto the mark stack during the ProcessMarkStack()
     // call above. At the same time, disable weak ref accesses using a per-thread flag. It's
-    // important to do these together in a single checkpoint so that we can ensure that mutators
-    // won't newly gray objects and push new refs onto the mark stack due to weak ref accesses and
+    // important to do these together so that we can ensure that mutators won't
+    // newly gray objects and push new refs onto the mark stack due to weak ref accesses and
     // mutators safely transition to the shared mark stack mode (without leaving unprocessed refs on
     // the thread-local mark stacks), without a race. This is why we use a thread-local weak ref
     // access flag Thread::tls32_.weak_ref_access_enabled_ instead of the global ones.
+    // We must use a stop-the-world pause to disable weak ref access. A checkpoint may lead to a
+    // deadlock if one mutator acquires a low-level mutex and then gets blocked while accessing
+    // a weak-ref (after participating in the checkpoint), and another mutator indefinitely waits
+    // for the mutex before it participates in the checkpoint. Consequently, the gc-thread blocks
+    // forever as the checkpoint never finishes (See runtime/mutator_gc_coord.md).
     SwitchToSharedMarkStackMode();
     CHECK(!self->GetWeakRefAccessEnabled());
     // Now that weak refs accesses are disabled, once we exhaust the shared mark stack again here
@@ -2034,21 +2049,36 @@
 void ConcurrentCopying::RevokeThreadLocalMarkStacks(bool disable_weak_ref_access,
                                                     Closure* checkpoint_callback) {
   Thread* self = Thread::Current();
-  RevokeThreadLocalMarkStackCheckpoint check_point(this, disable_weak_ref_access);
+  Locks::mutator_lock_->AssertSharedHeld(self);
   ThreadList* thread_list = Runtime::Current()->GetThreadList();
-  gc_barrier_->Init(self, 0);
-  size_t barrier_count = thread_list->RunCheckpoint(&check_point, checkpoint_callback);
-  // If there are no threads to wait which implys that all the checkpoint functions are finished,
-  // then no need to release the mutator lock.
-  if (barrier_count == 0) {
-    return;
+  RevokeThreadLocalMarkStackCheckpoint check_point(this, disable_weak_ref_access);
+  if (disable_weak_ref_access) {
+    // We're the only thread that could possibly ask for exclusive access here.
+    Locks::mutator_lock_->SharedUnlock(self);
+    {
+      ScopedPause pause(this);
+      MutexLock mu(self, *Locks::thread_list_lock_);
+      checkpoint_callback->Run(self);
+      for (Thread* thread : thread_list->GetList()) {
+        check_point.Run(thread);
+      }
+    }
+    Locks::mutator_lock_->SharedLock(self);
+  } else {
+    gc_barrier_->Init(self, 0);
+    size_t barrier_count = thread_list->RunCheckpoint(&check_point, checkpoint_callback);
+    // If there are no threads to wait which implys that all the checkpoint functions are finished,
+    // then no need to release the mutator lock.
+    if (barrier_count == 0) {
+      return;
+    }
+    Locks::mutator_lock_->SharedUnlock(self);
+    {
+      ScopedThreadStateChange tsc(self, kWaitingForCheckPointsToRun);
+      gc_barrier_->Increment(self, barrier_count);
+    }
+    Locks::mutator_lock_->SharedLock(self);
   }
-  Locks::mutator_lock_->SharedUnlock(self);
-  {
-    ScopedThreadStateChange tsc(self, kWaitingForCheckPointsToRun);
-    gc_barrier_->Increment(self, barrier_count);
-  }
-  Locks::mutator_lock_->SharedLock(self);
 }
 
 void ConcurrentCopying::RevokeThreadLocalMarkStack(Thread* thread) {
@@ -2196,6 +2226,7 @@
 
 inline void ConcurrentCopying::ProcessMarkStackRef(mirror::Object* to_ref) {
   DCHECK(!region_space_->IsInFromSpace(to_ref));
+  size_t obj_size = 0;
   space::RegionSpace::RegionType rtype = region_space_->GetRegionType(to_ref);
   if (kUseBakerReadBarrier) {
     DCHECK(to_ref->GetReadBarrierState() == ReadBarrier::GrayState())
@@ -2282,10 +2313,11 @@
       }
   }
   if (perform_scan) {
+    obj_size = to_ref->SizeOf<kDefaultVerifyFlags>();
     if (use_generational_cc_ && young_gen_) {
-      Scan<true>(to_ref);
+      Scan<true>(to_ref, obj_size);
     } else {
-      Scan<false>(to_ref);
+      Scan<false>(to_ref, obj_size);
     }
   }
   if (kUseBakerReadBarrier) {
@@ -2329,9 +2361,10 @@
     // Add to the live bytes per unevacuated from-space. Note this code is always run by the
     // GC-running thread (no synchronization required).
     DCHECK(region_space_bitmap_->Test(to_ref));
-    size_t obj_size = to_ref->SizeOf<kDefaultVerifyFlags>();
-    size_t alloc_size = RoundUp(obj_size, space::RegionSpace::kAlignment);
-    region_space_->AddLiveBytes(to_ref, alloc_size);
+    if (obj_size == 0) {
+      obj_size = to_ref->SizeOf<kDefaultVerifyFlags>();
+    }
+    region_space_->AddLiveBytes(to_ref, RoundUp(obj_size, space::RegionSpace::kAlignment));
   }
   if (ReadBarrier::kEnableToSpaceInvariantChecks) {
     CHECK(to_ref != nullptr);
@@ -2713,9 +2746,9 @@
     const uint64_t unevac_from_bytes = region_space_->GetBytesAllocatedInUnevacFromSpace();
     const uint64_t unevac_from_objects = region_space_->GetObjectsAllocatedInUnevacFromSpace();
     uint64_t to_bytes = bytes_moved_.load(std::memory_order_relaxed) + bytes_moved_gc_thread_;
-    cumulative_bytes_moved_.fetch_add(to_bytes, std::memory_order_relaxed);
+    cumulative_bytes_moved_ += to_bytes;
     uint64_t to_objects = objects_moved_.load(std::memory_order_relaxed) + objects_moved_gc_thread_;
-    cumulative_objects_moved_.fetch_add(to_objects, std::memory_order_relaxed);
+    cumulative_objects_moved_ += to_objects;
     if (kEnableFromSpaceAccountingCheck) {
       CHECK_EQ(from_space_num_objects_at_first_pause_, from_objects + unevac_from_objects);
       CHECK_EQ(from_space_num_bytes_at_first_pause_, from_bytes + unevac_from_bytes);
@@ -2757,6 +2790,7 @@
                 << heap_->num_bytes_allocated_.load();
     }
     RecordFree(ObjectBytePair(freed_objects, freed_bytes));
+    GetCurrentIteration()->SetScannedBytes(bytes_scanned_);
     if (kVerboseMode) {
       LOG(INFO) << "(after) num_bytes_allocated="
                 << heap_->num_bytes_allocated_.load();
@@ -3135,7 +3169,7 @@
 };
 
 template <bool kNoUnEvac>
-inline void ConcurrentCopying::Scan(mirror::Object* to_ref) {
+inline void ConcurrentCopying::Scan(mirror::Object* to_ref, size_t obj_size) {
   // Cannot have `kNoUnEvac` when Generational CC collection is disabled.
   DCHECK(!kNoUnEvac || use_generational_cc_);
   if (kDisallowReadBarrierDuringScan && !Runtime::Current()->IsActiveTransaction()) {
@@ -3144,6 +3178,11 @@
     // trigger read barriers.
     Thread::Current()->ModifyDebugDisallowReadBarrier(1);
   }
+  if (obj_size == 0) {
+    obj_size = to_ref->SizeOf<kDefaultVerifyFlags>();
+  }
+  bytes_scanned_ += obj_size;
+
   DCHECK(!region_space_->IsInFromSpace(to_ref));
   DCHECK_EQ(Thread::Current(), thread_running_gc_);
   RefFieldsVisitor<kNoUnEvac> visitor(this, thread_running_gc_);
@@ -3841,10 +3880,8 @@
      << (copied_live_bytes_ratio_sum_ / gc_count_) << " over " << gc_count_
      << " " << (young_gen_ ? "minor" : "major") << " GCs\n";
 
-  os << "Cumulative bytes moved "
-     << cumulative_bytes_moved_.load(std::memory_order_relaxed) << "\n";
-  os << "Cumulative objects moved "
-     << cumulative_objects_moved_.load(std::memory_order_relaxed) << "\n";
+  os << "Cumulative bytes moved " << cumulative_bytes_moved_ << "\n";
+  os << "Cumulative objects moved " << cumulative_objects_moved_ << "\n";
 
   os << "Peak regions allocated "
      << region_space_->GetMaxPeakNumNonFreeRegions() << " ("
diff --git a/runtime/gc/collector/concurrent_copying.h b/runtime/gc/collector/concurrent_copying.h
index 582328f..72d460d 100644
--- a/runtime/gc/collector/concurrent_copying.h
+++ b/runtime/gc/collector/concurrent_copying.h
@@ -177,7 +177,7 @@
       REQUIRES(!mark_stack_lock_, !skipped_blocks_lock_, !immune_gray_stack_lock_);
   // Scan the reference fields of object `to_ref`.
   template <bool kNoUnEvac>
-  void Scan(mirror::Object* to_ref) REQUIRES_SHARED(Locks::mutator_lock_)
+  void Scan(mirror::Object* to_ref, size_t obj_size = 0) REQUIRES_SHARED(Locks::mutator_lock_)
       REQUIRES(!mark_stack_lock_);
   // Scan the reference fields of object 'obj' in the dirty cards during
   // card-table scan. In addition to visiting the references, it also sets the
@@ -410,10 +410,6 @@
   // bytes_moved_gc_thread_ are critical for GC triggering; the others are just informative.
   Atomic<size_t> bytes_moved_;  // Used by mutators
   Atomic<size_t> objects_moved_;  // Used by mutators
-  size_t bytes_moved_gc_thread_;  // Used by GC
-  size_t objects_moved_gc_thread_;  // Used by GC
-  Atomic<uint64_t> cumulative_bytes_moved_;
-  Atomic<uint64_t> cumulative_objects_moved_;
 
   // copied_live_bytes_ratio_sum_ is read and written by CC per GC, in
   // ReclaimPhase, and is read by DumpPerformanceInfo (potentially from another
@@ -436,6 +432,15 @@
   // reclaimed_bytes_ratio = reclaimed_bytes/num_allocated_bytes per GC cycle
   float reclaimed_bytes_ratio_sum_;
 
+  // Used only by GC thread, so need not be atomic. Also, should be kept
+  // in a different cacheline than bytes/objects_moved_ (above) to avoid false
+  // cacheline sharing.
+  size_t bytes_moved_gc_thread_;
+  size_t objects_moved_gc_thread_;
+  uint64_t bytes_scanned_;
+  uint64_t cumulative_bytes_moved_;
+  uint64_t cumulative_objects_moved_;
+
   // The skipped blocks are memory blocks/chucks that were copies of
   // objects that were unused due to lost races (cas failures) at
   // object copy/forward pointer install. They may be reused.
diff --git a/runtime/gc/collector/garbage_collector.cc b/runtime/gc/collector/garbage_collector.cc
index f6bd996..80b3982 100644
--- a/runtime/gc/collector/garbage_collector.cc
+++ b/runtime/gc/collector/garbage_collector.cc
@@ -51,6 +51,7 @@
   timings_.Reset();
   pause_times_.clear();
   duration_ns_ = 0;
+  bytes_scanned_ = 0;
   clear_soft_references_ = clear_soft_references;
   gc_cause_ = gc_cause;
   freed_ = ObjectBytePair();
@@ -72,9 +73,13 @@
       gc_time_histogram_(nullptr),
       metrics_gc_count_(nullptr),
       gc_throughput_histogram_(nullptr),
+      gc_tracing_throughput_hist_(nullptr),
+      gc_throughput_avg_(nullptr),
+      gc_tracing_throughput_avg_(nullptr),
       cumulative_timings_(name),
       pause_histogram_lock_("pause histogram lock", kDefaultMutexLevel, true),
-      is_transaction_active_(false) {
+      is_transaction_active_(false),
+      are_metrics_initialized_(false) {
   ResetCumulativeStatistics();
 }
 
@@ -88,6 +93,7 @@
   total_time_ns_ = 0u;
   total_freed_objects_ = 0u;
   total_freed_bytes_ = 0;
+  total_scanned_bytes_ = 0;
   rss_histogram_.Reset();
   freed_bytes_histogram_.Reset();
   MutexLock mu(Thread::Current(), pause_histogram_lock_);
@@ -142,10 +148,6 @@
   }
   rss *= kPageSize;
   rss_histogram_.AddValue(rss / KB);
-  // Add up all the GC meta-data in bytes. It doesn't make sense in itself as it
-  // cannot be accumulated over GCs. So must be divided by gc-count while
-  // reporting.
-  GetMetrics()->TotalGcMetaDataSize()->Add(rss);
 #endif
   return rss;
 }
@@ -169,6 +171,7 @@
   // Update cumulative statistics with how many bytes the GC iteration freed.
   total_freed_objects_ += current_iteration->GetFreedObjects() +
       current_iteration->GetFreedLargeObjects();
+  total_scanned_bytes_ += current_iteration->GetScannedBytes();
   int64_t freed_bytes = current_iteration->GetFreedBytes() +
       current_iteration->GetFreedLargeObjectBytes();
   total_freed_bytes_ += freed_bytes;
@@ -177,18 +180,15 @@
   uint64_t end_time = NanoTime();
   uint64_t thread_cpu_end_time = ThreadCpuNanoTime();
   total_thread_cpu_time_ns_ += thread_cpu_end_time - thread_cpu_start_time;
-  current_iteration->SetDurationNs(end_time - start_time);
+  uint64_t duration_ns = end_time - start_time;
+  current_iteration->SetDurationNs(duration_ns);
   if (Locks::mutator_lock_->IsExclusiveHeld(self)) {
     // The entire GC was paused, clear the fake pauses which might be in the pause times and add
     // the whole GC duration.
     current_iteration->pause_times_.clear();
-    RegisterPause(current_iteration->GetDurationNs());
+    RegisterPause(duration_ns);
   }
-  total_time_ns_ += current_iteration->GetDurationNs();
-  if (gc_time_histogram_ != nullptr) {
-    // Report GC time in milliseconds.
-    gc_time_histogram_->Add(NsToMs(current_iteration->GetDurationNs()));
-  }
+  total_time_ns_ += duration_ns;
   uint64_t total_pause_time = 0;
   for (uint64_t pause_time : current_iteration->GetPauseTimes()) {
     MutexLock mu(self, pause_histogram_lock_);
@@ -197,13 +197,25 @@
   }
   metrics::ArtMetrics* metrics = runtime->GetMetrics();
   // Report STW pause time in microseconds.
-  metrics->MutatorPauseTimeDuringGC()->Add(total_pause_time / 1'000);
-  if (metrics_gc_count_ != nullptr) {
+  metrics->WorldStopTimeDuringGCAvg()->Add(total_pause_time / 1'000);
+  // Report total collection time of all GCs put together.
+  metrics->TotalGcCollectionTime()->Add(NsToMs(duration_ns));
+  if (are_metrics_initialized_) {
     metrics_gc_count_->Add(1);
-  }
-  if (gc_throughput_histogram_ != nullptr) {
+    // Report GC time in milliseconds.
+    gc_time_histogram_->Add(NsToMs(duration_ns));
+    // Throughput in bytes/s. Add 1us to prevent possible division by 0.
+    uint64_t throughput = (current_iteration->GetScannedBytes() * 1'000'000)
+            / (NsToUs(duration_ns) + 1);
+    // Report in MB/s.
+    throughput /= MB;
+    gc_tracing_throughput_hist_->Add(throughput);
+    gc_tracing_throughput_avg_->Add(throughput);
+
     // Report GC throughput in MB/s.
-    gc_throughput_histogram_->Add(current_iteration->GetEstimatedThroughput() / MB);
+    throughput = current_iteration->GetEstimatedThroughput() / MB;
+    gc_throughput_histogram_->Add(throughput);
+    gc_throughput_avg_->Add(throughput);
   }
   is_transaction_active_ = false;
 }
@@ -247,6 +259,7 @@
   total_time_ns_ = 0u;
   total_freed_objects_ = 0u;
   total_freed_bytes_ = 0;
+  total_scanned_bytes_ = 0u;
 }
 
 GarbageCollector::ScopedPause::ScopedPause(GarbageCollector* collector, bool with_reporting)
@@ -306,6 +319,7 @@
   const double seconds = NsToMs(total_ns) / 1000.0;
   const uint64_t freed_bytes = GetTotalFreedBytes();
   const uint64_t freed_objects = GetTotalFreedObjects();
+  const uint64_t scanned_bytes = GetTotalScannedBytes();
   {
     MutexLock mu(Thread::Current(), pause_histogram_lock_);
     if (pause_histogram_.SampleSize() > 0) {
@@ -343,7 +357,11 @@
      << PrettySize(freed_bytes / seconds) << "/s"
      << "  per cpu-time: "
      << static_cast<uint64_t>(freed_bytes / cpu_seconds) << "/s / "
-     << PrettySize(freed_bytes / cpu_seconds) << "/s\n";
+     << PrettySize(freed_bytes / cpu_seconds) << "/s\n"
+     << GetName() << " tracing throughput: "
+     << PrettySize(scanned_bytes / seconds) << "/s "
+     << " per cpu-time: "
+     << PrettySize(scanned_bytes / cpu_seconds) << "/s\n";
 }
 
 }  // namespace collector
diff --git a/runtime/gc/collector/garbage_collector.h b/runtime/gc/collector/garbage_collector.h
index b42f189..d439914 100644
--- a/runtime/gc/collector/garbage_collector.h
+++ b/runtime/gc/collector/garbage_collector.h
@@ -92,6 +92,9 @@
   uint64_t GetTotalFreedObjects() const {
     return total_freed_objects_;
   }
+  uint64_t GetTotalScannedBytes() const {
+    return total_scanned_bytes_;
+  }
   // Reset the cumulative timings and pause histogram.
   void ResetMeasurements() REQUIRES(!pause_histogram_lock_);
   // Returns the estimated throughput in bytes / second.
@@ -160,13 +163,21 @@
   metrics::MetricsBase<int64_t>* gc_time_histogram_;
   metrics::MetricsBase<uint64_t>* metrics_gc_count_;
   metrics::MetricsBase<int64_t>* gc_throughput_histogram_;
+  metrics::MetricsBase<int64_t>* gc_tracing_throughput_hist_;
+  metrics::MetricsBase<uint64_t>* gc_throughput_avg_;
+  metrics::MetricsBase<uint64_t>* gc_tracing_throughput_avg_;
   uint64_t total_thread_cpu_time_ns_;
   uint64_t total_time_ns_;
   uint64_t total_freed_objects_;
   int64_t total_freed_bytes_;
+  uint64_t total_scanned_bytes_;
   CumulativeLogger cumulative_timings_;
   mutable Mutex pause_histogram_lock_ DEFAULT_MUTEX_ACQUIRED_AFTER;
   bool is_transaction_active_;
+  // The garbage collector algorithms will either have all the metrics pointers
+  // (above) initialized, or none of them. So instead of checking each time, we
+  // use this flag.
+  bool are_metrics_initialized_;
 
  private:
   DISALLOW_IMPLICIT_CONSTRUCTORS(GarbageCollector);
diff --git a/runtime/gc/collector/iteration.h b/runtime/gc/collector/iteration.h
index 363459a..348f49d 100644
--- a/runtime/gc/collector/iteration.h
+++ b/runtime/gc/collector/iteration.h
@@ -60,6 +60,12 @@
   uint64_t GetFreedRevokeBytes() const {
     return freed_bytes_revoke_;
   }
+  uint64_t GetScannedBytes() const {
+    return bytes_scanned_;
+  }
+  void SetScannedBytes(uint64_t bytes) {
+      bytes_scanned_ = bytes;
+  }
   void SetFreedRevoke(uint64_t freed) {
     freed_bytes_revoke_ = freed;
   }
@@ -84,6 +90,7 @@
   GcCause gc_cause_;
   bool clear_soft_references_;
   uint64_t duration_ns_;
+  uint64_t bytes_scanned_;
   TimingLogger timings_;
   ObjectBytePair freed_;
   ObjectBytePair freed_los_;
diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc
index c9830cf..08aaaef 100644
--- a/runtime/gc/heap.cc
+++ b/runtime/gc/heap.cc
@@ -3619,9 +3619,9 @@
           current_gc_iteration_.GetFreedRevokeBytes();
       // Bytes allocated will shrink by freed_bytes after the GC runs, so if we want to figure out
       // how many bytes were allocated during the GC we need to add freed_bytes back on.
-      CHECK_GE(bytes_allocated + freed_bytes, bytes_allocated_before_gc);
-      const size_t bytes_allocated_during_gc = bytes_allocated + freed_bytes -
-          bytes_allocated_before_gc;
+      // Almost always bytes_allocated + freed_bytes >= bytes_allocated_before_gc.
+      const size_t bytes_allocated_during_gc =
+          UnsignedDifference(bytes_allocated + freed_bytes, bytes_allocated_before_gc);
       // Calculate when to perform the next ConcurrentGC.
       // Estimate how many remaining bytes we will have when we need to start the next GC.
       size_t remaining_bytes = bytes_allocated_during_gc;
diff --git a/runtime/gc/space/image_space.cc b/runtime/gc/space/image_space.cc
index 51582ce..4eb7f25 100644
--- a/runtime/gc/space/image_space.cc
+++ b/runtime/gc/space/image_space.cc
@@ -3480,19 +3480,18 @@
     oat_checksums.remove_prefix(1u);
 
     const std::string& bcp_filename = boot_class_path[bcp_pos];
-    std::vector<std::unique_ptr<const DexFile>> dex_files;
+    std::vector<uint32_t> checksums;
+    std::vector<std::string> dex_locations;
     const ArtDexFileLoader dex_file_loader;
-    if (!dex_file_loader.Open(bcp_filename.c_str(),
-                              bcp_filename,  // The location does not matter here.
-                              /*verify=*/ false,
-                              /*verify_checksum=*/ false,
-                              error_msg,
-                              &dex_files)) {
+    if (!dex_file_loader.GetMultiDexChecksums(bcp_filename.c_str(),
+                                              &checksums,
+                                              &dex_locations,
+                                              error_msg)) {
       return false;
     }
-    DCHECK(!dex_files.empty());
-    for (const std::unique_ptr<const DexFile>& dex_file : dex_files) {
-      std::string dex_file_checksum = StringPrintf("/%08x", dex_file->GetLocationChecksum());
+    DCHECK(!checksums.empty());
+    for (uint32_t checksum : checksums) {
+      std::string dex_file_checksum = StringPrintf("/%08x", checksum);
       if (!StartsWith(oat_checksums, dex_file_checksum)) {
         *error_msg = StringPrintf("Dex checksum mismatch, expected %s to start with %s",
                                   std::string(oat_checksums).c_str(),
diff --git a/runtime/interpreter/mterp/arm64ng/main.S b/runtime/interpreter/mterp/arm64ng/main.S
index 627bb04..79eca04 100644
--- a/runtime/interpreter/mterp/arm64ng/main.S
+++ b/runtime/interpreter/mterp/arm64ng/main.S
@@ -290,8 +290,9 @@
 .endm
 
 .macro BRANCH
-    // Update method counter and do a suspend check if the branch is negative.
-    tbnz wINST, #31, 2f
+    // Update method counter and do a suspend check if the branch is negative or zero.
+    cmp wINST, #0
+    b.le 2f
 1:
     add     xPC, xPC, wINST, sxtw #1    // update xPC
     FETCH wINST, 0                      // load wINST
diff --git a/runtime/interpreter/mterp/armng/main.S b/runtime/interpreter/mterp/armng/main.S
index 4427908..932f6ac 100644
--- a/runtime/interpreter/mterp/armng/main.S
+++ b/runtime/interpreter/mterp/armng/main.S
@@ -301,9 +301,9 @@
 .endm
 
 .macro BRANCH
-    // Update method counter and do a suspend check if the branch is negative.
+    // Update method counter and do a suspend check if the branch is negative or zero.
     cmp rINST, #0
-    blt 2f
+    ble 2f
 1:
     add r2, rINST, rINST                // r2<- byte offset
     FETCH_ADVANCE_INST_RB r2            // update xPC, load rINST
diff --git a/runtime/interpreter/mterp/x86_64ng/main.S b/runtime/interpreter/mterp/x86_64ng/main.S
index 71df9e1..33912d7 100644
--- a/runtime/interpreter/mterp/x86_64ng/main.S
+++ b/runtime/interpreter/mterp/x86_64ng/main.S
@@ -251,9 +251,9 @@
 
 
 .macro BRANCH
-    // Update method counter and do a suspend check if the branch is negative.
+    // Update method counter and do a suspend check if the branch is negative or zero.
     testq rINSTq, rINSTq
-    js 3f
+    jle 3f
 2:
     leaq    (rPC, rINSTq, 2), rPC
     FETCH_INST
diff --git a/runtime/jit/jit.cc b/runtime/jit/jit.cc
index 5ee8871..876e120 100644
--- a/runtime/jit/jit.cc
+++ b/runtime/jit/jit.cc
@@ -1238,7 +1238,8 @@
       // Start with '/boot' and end with '.art' to match the pattern recognized
       // by android_os_Debug.cpp for boot images.
       const char* name = "/boot-image-methods.art";
-      unique_fd mem_fd = unique_fd(art::memfd_create(name, /* flags= */ MFD_ALLOW_SEALING));
+      unique_fd mem_fd =
+          unique_fd(art::memfd_create(name, /* flags= */ MFD_ALLOW_SEALING | MFD_CLOEXEC));
       if (mem_fd.get() == -1) {
         PLOG(WARNING) << "Could not create boot image methods file descriptor";
         return;
diff --git a/runtime/jit/jit_memory_region.cc b/runtime/jit/jit_memory_region.cc
index 58a4041..b0699c4 100644
--- a/runtime/jit/jit_memory_region.cc
+++ b/runtime/jit/jit_memory_region.cc
@@ -20,6 +20,7 @@
 #include <unistd.h>
 
 #include <android-base/unique_fd.h>
+#include <log/log.h>
 #include "base/bit_utils.h"  // For RoundDown, RoundUp
 #include "base/globals.h"
 #include "base/logging.h"  // For VLOG.
@@ -64,7 +65,15 @@
   // File descriptor enabling dual-view mapping of code section.
   unique_fd mem_fd;
 
+
+  // The memory mappings we are going to create.
+  MemMap data_pages;
+  MemMap exec_pages;
+  MemMap non_exec_pages;
+  MemMap writable_data_pages;
+
   if (is_zygote) {
+    android_errorWriteLog(0x534e4554, "200284993");  // Report to SafetyNet.
     // Because we are not going to GC code generated by the zygote, just use all available.
     current_capacity_ = max_capacity;
     mem_fd = unique_fd(CreateZygoteMemory(capacity, error_msg));
@@ -92,17 +101,12 @@
     }
   }
 
+  // Map name specific for android_os_Debug.cpp accounting.
   std::string data_cache_name = is_zygote ? "zygote-data-code-cache" : "data-code-cache";
   std::string exec_cache_name = is_zygote ? "zygote-jit-code-cache" : "jit-code-cache";
 
   std::string error_str;
-  // Map name specific for android_os_Debug.cpp accounting.
-  // Map in low 4gb to simplify accessing root tables for x86_64.
-  // We could do PC-relative addressing to avoid this problem, but that
-  // would require reserving code and data area before submitting, which
-  // means more windows for the code memory to be RWX.
   int base_flags;
-  MemMap data_pages;
   if (mem_fd.get() >= 0) {
     // Dual view of JIT code cache case. Create an initial mapping of data pages large enough
     // for data and non-writable view of JIT code pages. We use the memory file descriptor to
@@ -131,7 +135,63 @@
     // Additionally, the zyzote will create a dual view of the data portion of
     // the cache. This mapping will be read-only, whereas the second mapping
     // will be writable.
+
     base_flags = MAP_SHARED;
+
+    // Create the writable mappings now, so that in case of the zygote, we can
+    // prevent any future writable mappings through sealing.
+    if (exec_capacity > 0) {
+      // For dual view, create the secondary view of code memory used for updating code. This view
+      // is never executable.
+      std::string name = exec_cache_name + "-rw";
+      non_exec_pages = MemMap::MapFile(exec_capacity,
+                                       kIsDebugBuild ? kProtR : kProtRW,
+                                       base_flags,
+                                       mem_fd,
+                                       /* start= */ data_capacity,
+                                       /* low_4GB= */ false,
+                                       name.c_str(),
+                                       &error_str);
+      if (!non_exec_pages.IsValid()) {
+        // This is unexpected.
+        *error_msg = "Failed to map non-executable view of JIT code cache";
+        return false;
+      }
+      // Create a dual view of the data cache.
+      name = data_cache_name + "-rw";
+      writable_data_pages = MemMap::MapFile(data_capacity,
+                                            kProtRW,
+                                            base_flags,
+                                            mem_fd,
+                                            /* start= */ 0,
+                                            /* low_4GB= */ false,
+                                            name.c_str(),
+                                            &error_str);
+      if (!writable_data_pages.IsValid()) {
+        std::ostringstream oss;
+        oss << "Failed to create dual data view: " << error_str;
+        *error_msg = oss.str();
+        return false;
+      }
+      if (writable_data_pages.MadviseDontFork() != 0) {
+        *error_msg = "Failed to MadviseDontFork the writable data view";
+        return false;
+      }
+      if (non_exec_pages.MadviseDontFork() != 0) {
+        *error_msg = "Failed to MadviseDontFork the writable code view";
+        return false;
+      }
+      // Now that we have created the writable and executable mappings, prevent creating any new
+      // ones.
+      if (is_zygote && !ProtectZygoteMemory(mem_fd.get(), error_msg)) {
+        return false;
+      }
+    }
+
+    // Map in low 4gb to simplify accessing root tables for x86_64.
+    // We could do PC-relative addressing to avoid this problem, but that
+    // would require reserving code and data area before submitting, which
+    // means more windows for the code memory to be RWX.
     data_pages = MemMap::MapFile(
         data_capacity + exec_capacity,
         kProtR,
@@ -172,9 +232,6 @@
     return false;
   }
 
-  MemMap exec_pages;
-  MemMap non_exec_pages;
-  MemMap writable_data_pages;
   if (exec_capacity > 0) {
     uint8_t* const divider = data_pages.Begin() + data_capacity;
     // Set initial permission for executable view to catch any SELinux permission problems early
@@ -193,59 +250,6 @@
       *error_msg = oss.str();
       return false;
     }
-
-    if (mem_fd.get() >= 0) {
-      // For dual view, create the secondary view of code memory used for updating code. This view
-      // is never executable.
-      std::string name = exec_cache_name + "-rw";
-      non_exec_pages = MemMap::MapFile(exec_capacity,
-                                       kIsDebugBuild ? kProtR : kProtRW,
-                                       base_flags,
-                                       mem_fd,
-                                       /* start= */ data_capacity,
-                                       /* low_4GB= */ false,
-                                       name.c_str(),
-                                       &error_str);
-      if (!non_exec_pages.IsValid()) {
-        static const char* kFailedNxView = "Failed to map non-executable view of JIT code cache";
-        if (rwx_memory_allowed) {
-          // Log and continue as single view JIT (requires RWX memory).
-          VLOG(jit) << kFailedNxView;
-        } else {
-          *error_msg = kFailedNxView;
-          return false;
-        }
-      }
-      // Create a dual view of the data cache.
-      name = data_cache_name + "-rw";
-      writable_data_pages = MemMap::MapFile(data_capacity,
-                                            kProtRW,
-                                            base_flags,
-                                            mem_fd,
-                                            /* start= */ 0,
-                                            /* low_4GB= */ false,
-                                            name.c_str(),
-                                            &error_str);
-      if (!writable_data_pages.IsValid()) {
-        std::ostringstream oss;
-        oss << "Failed to create dual data view: " << error_str;
-        *error_msg = oss.str();
-        return false;
-      }
-      if (writable_data_pages.MadviseDontFork() != 0) {
-        *error_msg = "Failed to madvise dont fork the writable data view";
-        return false;
-      }
-      if (non_exec_pages.MadviseDontFork() != 0) {
-        *error_msg = "Failed to madvise dont fork the writable code view";
-        return false;
-      }
-      // Now that we have created the writable and executable mappings, prevent creating any new
-      // ones.
-      if (is_zygote && !ProtectZygoteMemory(mem_fd.get(), error_msg)) {
-        return false;
-      }
-    }
   } else {
     // Profiling only. No memory for code required.
   }
diff --git a/runtime/jit/jit_memory_region_test.cc b/runtime/jit/jit_memory_region_test.cc
index 2049611..18f34fb 100644
--- a/runtime/jit/jit_memory_region_test.cc
+++ b/runtime/jit/jit_memory_region_test.cc
@@ -492,6 +492,62 @@
     munmap(addr, kPageSize);
     munmap(shared, kPageSize);
   }
+
+  // Test that a readable mapping created befire sealing future writes, can be
+  // changed into a writable mapping.
+  void TestVmMayWriteBefore() {
+    // Zygote JIT memory only works on kernels that don't segfault on flush.
+    TEST_DISABLED_FOR_KERNELS_WITH_CACHE_SEGFAULT();
+    std::string error_msg;
+    size_t size = kPageSize;
+    int32_t* addr = nullptr;
+    {
+      android::base::unique_fd fd(JitMemoryRegion::CreateZygoteMemory(size, &error_msg));
+      CHECK_NE(fd.get(), -1);
+
+      // Create a shared readable mapping.
+      addr = reinterpret_cast<int32_t*>(
+          mmap(nullptr, kPageSize, PROT_READ, MAP_SHARED, fd.get(), 0));
+      CHECK(addr != nullptr);
+      CHECK_NE(addr, MAP_FAILED);
+
+      // Protect the memory.
+      bool res = JitMemoryRegion::ProtectZygoteMemory(fd.get(), &error_msg);
+      CHECK(res);
+    }
+    // At this point, the fd has been dropped, but the memory mappings are still
+    // there.
+    int res = mprotect(addr, kPageSize, PROT_WRITE);
+    CHECK_EQ(res, 0);
+  }
+
+  // Test that we cannot create a writable mapping after sealing future writes.
+  void TestVmMayWriteAfter() {
+    // Zygote JIT memory only works on kernels that don't segfault on flush.
+    TEST_DISABLED_FOR_KERNELS_WITH_CACHE_SEGFAULT();
+    std::string error_msg;
+    size_t size = kPageSize;
+    int32_t* addr = nullptr;
+    {
+      android::base::unique_fd fd(JitMemoryRegion::CreateZygoteMemory(size, &error_msg));
+      CHECK_NE(fd.get(), -1);
+
+      // Protect the memory.
+      bool res = JitMemoryRegion::ProtectZygoteMemory(fd.get(), &error_msg);
+      CHECK(res);
+
+      // Create a shared readable mapping.
+      addr = reinterpret_cast<int32_t*>(
+          mmap(nullptr, kPageSize, PROT_READ, MAP_SHARED, fd.get(), 0));
+      CHECK(addr != nullptr);
+      CHECK_NE(addr, MAP_FAILED);
+    }
+    // At this point, the fd has been dropped, but the memory mappings are still
+    // there.
+    int res = mprotect(addr, kPageSize, PROT_WRITE);
+    CHECK_EQ(res, -1);
+    CHECK_EQ(errno, EACCES);
+  }
 };
 
 TEST_F(TestZygoteMemory, BasicTest) {
@@ -510,6 +566,14 @@
   TestFromSharedToPrivate();
 }
 
+TEST_F(TestZygoteMemory, TestVmMayWriteBefore) {
+  TestVmMayWriteBefore();
+}
+
+TEST_F(TestZygoteMemory, TestVmMayWriteAfter) {
+  TestVmMayWriteAfter();
+}
+
 #endif  // defined (__BIONIC__)
 
 }  // namespace jit
diff --git a/runtime/jit/profile_saver.cc b/runtime/jit/profile_saver.cc
index 425eadc..b86badc 100644
--- a/runtime/jit/profile_saver.cc
+++ b/runtime/jit/profile_saver.cc
@@ -189,7 +189,7 @@
       // We might have been woken up by a huge number of notifications to guarantee saving.
       // If we didn't meet the minimum saving period go back to sleep (only if missed by
       // a reasonable margin).
-      uint64_t min_save_period_ns = options_.GetMinSavePeriodMs();
+      uint64_t min_save_period_ns = MsToNs(options_.GetMinSavePeriodMs());
       while (min_save_period_ns * 0.9 > sleep_time) {
         {
           MutexLock mu(self, wait_lock_);
diff --git a/runtime/metrics/reporter.cc b/runtime/metrics/reporter.cc
index 26b55b8..a44066e 100644
--- a/runtime/metrics/reporter.cc
+++ b/runtime/metrics/reporter.cc
@@ -16,7 +16,12 @@
 
 #include "reporter.h"
 
+#include <algorithm>
+
+#include <android-base/parseint.h>
+
 #include "base/flags.h"
+#include "oat_file_manager.h"
 #include "runtime.h"
 #include "runtime_options.h"
 #include "statsd.h"
@@ -28,31 +33,41 @@
 namespace art {
 namespace metrics {
 
-std::unique_ptr<MetricsReporter> MetricsReporter::Create(ReportingConfig config, Runtime* runtime) {
+std::unique_ptr<MetricsReporter> MetricsReporter::Create(
+    const ReportingConfig& config, Runtime* runtime) {
   // We can't use std::make_unique here because the MetricsReporter constructor is private.
   return std::unique_ptr<MetricsReporter>{new MetricsReporter{std::move(config), runtime}};
 }
 
-MetricsReporter::MetricsReporter(ReportingConfig config, Runtime* runtime)
-    : config_{std::move(config)}, runtime_{runtime} {}
+MetricsReporter::MetricsReporter(const ReportingConfig& config, Runtime* runtime)
+    : config_{config},
+      runtime_{runtime},
+      startup_reported_{false},
+      report_interval_index_{0} {}
 
 MetricsReporter::~MetricsReporter() { MaybeStopBackgroundThread(); }
 
-bool MetricsReporter::IsPeriodicReportingEnabled() const {
-  return config_.periodic_report_seconds.has_value();
+void MetricsReporter::ReloadConfig(const ReportingConfig& config) {
+  DCHECK(!thread_.has_value()) << "The config cannot be reloaded after the background "
+                                  "reporting thread is started.";
+  config_ = config;
 }
 
-void MetricsReporter::SetReportingPeriod(unsigned int period_seconds) {
-  DCHECK(!thread_.has_value()) << "The reporting period should not be changed after the background "
-                                  "reporting thread is started.";
-
-  config_.periodic_report_seconds = period_seconds;
+bool MetricsReporter::IsMetricsReportingEnabled(const SessionData& session_data) const {
+  return session_data.session_id % config_.reporting_num_mods < config_.reporting_mods;
 }
 
 bool MetricsReporter::MaybeStartBackgroundThread(SessionData session_data) {
   CHECK(!thread_.has_value());
+
+  session_data_ = session_data;
+  LOG_STREAM(DEBUG) << "Received session metadata: " << session_data_.session_id;
+
+  if (!IsMetricsReportingEnabled(session_data_)) {
+    return false;
+  }
+
   thread_.emplace(&MetricsReporter::BackgroundThreadRun, this);
-  messages_.SendMessage(BeginSessionMessage{session_data});
   return true;
 }
 
@@ -60,15 +75,28 @@
   if (thread_.has_value()) {
     messages_.SendMessage(ShutdownRequestedMessage{});
     thread_->join();
+    thread_.reset();
   }
 }
 
 void MetricsReporter::NotifyStartupCompleted() {
-  if (thread_.has_value()) {
+  if (ShouldReportAtStartup() && thread_.has_value()) {
     messages_.SendMessage(StartupCompletedMessage{});
   }
 }
 
+void MetricsReporter::NotifyAppInfoUpdated(AppInfo* app_info) {
+  std::string compilation_reason;
+  std::string compiler_filter;
+
+  app_info->GetPrimaryApkOptimizationStatus(
+      &compiler_filter, &compilation_reason);
+
+  SetCompilationInfo(
+      CompilationReasonFromName(compilation_reason),
+      CompilerFilterReportingFromName(compiler_filter));
+}
+
 void MetricsReporter::RequestMetricsReport(bool synchronous) {
   if (thread_.has_value()) {
     messages_.SendMessage(RequestMetricsReportMessage{synchronous});
@@ -79,7 +107,7 @@
 }
 
 void MetricsReporter::SetCompilationInfo(CompilationReason compilation_reason,
-                                         CompilerFilter::Filter compiler_filter) {
+                                         CompilerFilterReporting compiler_filter) {
   if (thread_.has_value()) {
     messages_.SendMessage(CompilationInfoMessage{compilation_reason, compiler_filter});
   }
@@ -114,59 +142,63 @@
 
   while (running) {
     messages_.SwitchReceive(
-        [&](BeginSessionMessage message) {
-          LOG_STREAM(DEBUG) << "Received session metadata";
-          session_data_ = message.session_data;
-        },
         [&]([[maybe_unused]] ShutdownRequestedMessage message) {
-          LOG_STREAM(DEBUG) << "Shutdown request received";
+          LOG_STREAM(DEBUG) << "Shutdown request received " << session_data_.session_id;
           running = false;
 
           ReportMetrics();
         },
         [&](RequestMetricsReportMessage message) {
-          LOG_STREAM(DEBUG) << "Explicit report request received";
+          LOG_STREAM(DEBUG) << "Explicit report request received " << session_data_.session_id;
           ReportMetrics();
           if (message.synchronous) {
             thread_to_host_messages_.SendMessage(ReportCompletedMessage{});
           }
         },
         [&]([[maybe_unused]] TimeoutExpiredMessage message) {
-          LOG_STREAM(DEBUG) << "Timer expired, reporting metrics";
+          LOG_STREAM(DEBUG) << "Timer expired, reporting metrics " << session_data_.session_id;
 
           ReportMetrics();
-
           MaybeResetTimeout();
         },
         [&]([[maybe_unused]] StartupCompletedMessage message) {
-          LOG_STREAM(DEBUG) << "App startup completed, reporting metrics";
+          LOG_STREAM(DEBUG) << "App startup completed, reporting metrics "
+              << session_data_.session_id;
           ReportMetrics();
+          startup_reported_ = true;
+          MaybeResetTimeout();
         },
         [&](CompilationInfoMessage message) {
-          LOG_STREAM(DEBUG) << "Compilation info received";
+          LOG_STREAM(DEBUG) << "Compilation info received " << session_data_.session_id;
           session_data_.compilation_reason = message.compilation_reason;
           session_data_.compiler_filter = message.compiler_filter;
+
+          UpdateSessionInBackends();
         });
   }
 
   if (attached) {
     runtime_->DetachCurrentThread();
   }
-  LOG_STREAM(DEBUG) << "Metrics reporting thread terminating";
+  LOG_STREAM(DEBUG) << "Metrics reporting thread terminating " << session_data_.session_id;
 }
 
 void MetricsReporter::MaybeResetTimeout() {
-  if (config_.periodic_report_seconds.has_value()) {
-    messages_.SetTimeout(SecondsToMs(config_.periodic_report_seconds.value()));
+  if (ShouldContinueReporting()) {
+    messages_.SetTimeout(SecondsToMs(GetNextPeriodSeconds()));
   }
 }
 
+const ArtMetrics* MetricsReporter::GetMetrics() {
+  return runtime_->GetMetrics();
+}
+
 void MetricsReporter::ReportMetrics() {
-  ArtMetrics* metrics{runtime_->GetMetrics()};
+  const ArtMetrics* metrics = GetMetrics();
 
   if (!session_started_) {
     for (auto& backend : backends_) {
-      backend->BeginSession(session_data_);
+      backend->BeginOrUpdateSession(session_data_);
     }
     session_started_ = true;
   }
@@ -176,15 +208,137 @@
   }
 }
 
-ReportingConfig ReportingConfig::FromFlags() {
+void MetricsReporter::UpdateSessionInBackends() {
+  if (session_started_) {
+    for (auto& backend : backends_) {
+      backend->BeginOrUpdateSession(session_data_);
+    }
+  }
+}
+
+bool MetricsReporter::ShouldReportAtStartup() const {
+  return IsMetricsReportingEnabled(session_data_) &&
+      config_.period_spec.has_value() &&
+      config_.period_spec->report_startup_first;
+}
+
+bool MetricsReporter::ShouldContinueReporting() const {
+  bool result =
+      // Only if the reporting is enabled
+      IsMetricsReportingEnabled(session_data_) &&
+      // and if we have period spec
+      config_.period_spec.has_value() &&
+      // and the periods are non empty
+      !config_.period_spec->periods_seconds.empty() &&
+      // and we already reported startup or not required to report startup
+      (startup_reported_ || !config_.period_spec->report_startup_first) &&
+      // and we still have unreported intervals or we are asked to report continuously.
+      (config_.period_spec->continuous_reporting ||
+              (report_interval_index_ < config_.period_spec->periods_seconds.size()));
+  return result;
+}
+
+uint32_t MetricsReporter::GetNextPeriodSeconds() {
+  DCHECK(ShouldContinueReporting());
+
+  // The index is either the current report_interval_index or the last index
+  // if we are in continuous mode and reached the end.
+  uint32_t index = std::min(
+      report_interval_index_,
+      static_cast<uint32_t>(config_.period_spec->periods_seconds.size() - 1));
+
+  uint32_t result = config_.period_spec->periods_seconds[index];
+
+  // Advance the index if we didn't get to the end.
+  if (report_interval_index_ < config_.period_spec->periods_seconds.size()) {
+    report_interval_index_++;
+  }
+  return result;
+}
+
+ReportingConfig ReportingConfig::FromFlags(bool is_system_server) {
+  std::optional<std::string> spec_str = is_system_server
+      ? gFlags.MetricsReportingSpecSystemServer.GetValueOptional()
+      : gFlags.MetricsReportingSpec.GetValueOptional();
+
+  std::optional<ReportingPeriodSpec> period_spec = std::nullopt;
+
+  if (spec_str.has_value()) {
+    std::string error;
+    period_spec = ReportingPeriodSpec::Parse(spec_str.value(), &error);
+    if (!period_spec.has_value()) {
+      LOG(ERROR) << "Failed to create metrics reporting spec from: " << spec_str.value()
+          << " with error: " << error;
+    }
+  }
+
+  uint32_t reporting_num_mods = is_system_server
+      ? gFlags.MetricsReportingNumModsServer()
+      : gFlags.MetricsReportingNumMods();
+  uint32_t reporting_mods = is_system_server
+      ? gFlags.MetricsReportingModsServer()
+      : gFlags.MetricsReportingMods();
+
+  if (reporting_mods > reporting_num_mods || reporting_num_mods == 0) {
+    LOG(ERROR) << "Invalid metrics reporting mods: " << reporting_mods
+        << " num modes=" << reporting_num_mods
+        << ". The reporting is disabled";
+    reporting_mods = 0;
+    reporting_num_mods = 100;
+  }
+
   return {
-      .dump_to_logcat = gFlags.WriteMetricsToLogcat(),
-      .dump_to_file = gFlags.WriteMetricsToFile.GetValueOptional(),
-      .dump_to_statsd = gFlags.WriteMetricsToStatsd(),
-      .periodic_report_seconds = gFlags.MetricsReportingPeriod.GetValueOptional(),
+      .dump_to_logcat = gFlags.MetricsWriteToLogcat(),
+      .dump_to_file = gFlags.MetricsWriteToFile.GetValueOptional(),
+      .dump_to_statsd = gFlags.MetricsWriteToStatsd(),
+      .period_spec = period_spec,
+      .reporting_num_mods = reporting_num_mods,
+      .reporting_mods = reporting_mods,
   };
 }
 
+std::optional<ReportingPeriodSpec> ReportingPeriodSpec::Parse(
+    const std::string& spec_str, std::string* error_msg) {
+  *error_msg = "";
+  if (spec_str.empty()) {
+    *error_msg = "Invalid empty spec.";
+    return std::nullopt;
+  }
+
+  // Split the string. Each element is separated by comma.
+  std::vector<std::string> elems;
+  Split(spec_str, ',', &elems);
+
+  // Check the startup marker (front) and the continuous one (back).
+  std::optional<ReportingPeriodSpec> spec = std::make_optional(ReportingPeriodSpec());
+  spec->spec = spec_str;
+  spec->report_startup_first = elems.front() == "S";
+  spec->continuous_reporting = elems.back() == "*";
+
+  // Compute the indices for the period values.
+  size_t start_interval_idx = spec->report_startup_first ? 1 : 0;
+  size_t end_interval_idx = spec->continuous_reporting ? (elems.size() - 1) : elems.size();
+
+  // '*' needs a numeric interval before in order to be valid.
+  if (spec->continuous_reporting &&
+      end_interval_idx == start_interval_idx) {
+    *error_msg = "Invalid period value in spec: " + spec_str;
+    return std::nullopt;
+  }
+
+  // Parse the periods.
+  for (size_t i = start_interval_idx; i < end_interval_idx; i++) {
+    uint32_t period;
+    if (!android::base::ParseUint(elems[i], &period)) {
+        *error_msg = "Invalid period value in spec: " + spec_str;
+        return std::nullopt;
+    }
+    spec->periods_seconds.push_back(period);
+  }
+
+  return spec;
+}
+
 }  // namespace metrics
 }  // namespace art
 
diff --git a/runtime/metrics/reporter.h b/runtime/metrics/reporter.h
index 3e8056b..ed7022d 100644
--- a/runtime/metrics/reporter.h
+++ b/runtime/metrics/reporter.h
@@ -17,6 +17,7 @@
 #ifndef ART_RUNTIME_METRICS_REPORTER_H_
 #define ART_RUNTIME_METRICS_REPORTER_H_
 
+#include "app_info.h"
 #include "base/message_queue.h"
 #include "base/metrics/metrics.h"
 
@@ -26,9 +27,47 @@
 namespace art {
 namespace metrics {
 
+/**
+ * Encapsulates the specification of the metric reporting periods.
+ *
+ * The period spec follows the following regex: "(S,)?(\d+,)*\*?"
+ * with the following semantics:
+ *   "S"         - will only report at startup.
+ *
+ *   "S,1,1"     - will report startup, than 1 second later, then another
+ *                 second later.
+ *
+ *   "S,1,2,4  " - will report at Startup time, then 1 seconds later,
+ *                 then 2, then finally 4 seconds later. After that, the
+ *                 reporting will stop.
+ *
+ *   "S,1,2,4,*" - same as above, but after the final 4s period, the
+ *                 reporting will continue every other 4s.
+ *                 '*' is an indication we should report continuously
+ *                 every N seconds, where N is the last period.
+ *
+ *   "2,*"       - will report every 2 seconds
+ *
+ * Note that "", "*", or "S,*" are not valid specs, and 'S' can only occur
+ * in the beginning.
+ */
+struct ReportingPeriodSpec {
+  static std::optional<ReportingPeriodSpec> Parse(
+      const std::string& spec_str, std::string* error_msg);
+
+  // The original spec.
+  std::string spec;
+  // The intervals when we should report.
+  std::vector<uint32_t> periods_seconds;
+  // Whether or not the reporting is continuous (contains a '*').
+  bool continuous_reporting{false};
+  // Whether or not the reporting should start after startup event (starts with an 'S').
+  bool report_startup_first{false};
+};
+
 // Defines the set of options for how metrics reporting happens.
 struct ReportingConfig {
-  static ReportingConfig FromFlags();
+  static ReportingConfig FromFlags(bool is_system_server = false);
 
   // Causes metrics to be written to the log, which makes them show up in logcat.
   bool dump_to_logcat{false};
@@ -39,17 +78,24 @@
   // If set, provides a file name to enable metrics logging to a file.
   std::optional<std::string> dump_to_file;
 
-  // If set, metrics will be reported every time this many seconds elapses.
-  std::optional<unsigned int> periodic_report_seconds;
+  // The reporting period configuration.
+  std::optional<ReportingPeriodSpec> period_spec;
+
+  // The mods that should report metrics. Together with reporting_num_mods, they
+  // dictate what percentage of the runtime execution will report metrics.
+  // If the `session_id (a random number) % reporting_num_mods < reporting_mods`
+  // then the runtime session will report metrics.
+  uint32_t reporting_mods{0};
+  uint32_t reporting_num_mods{100};
 };
 
 // MetricsReporter handles periodically reporting ART metrics.
 class MetricsReporter {
  public:
   // Creates a MetricsReporter instance that matches the options selected in ReportingConfig.
-  static std::unique_ptr<MetricsReporter> Create(ReportingConfig config, Runtime* runtime);
+  static std::unique_ptr<MetricsReporter> Create(const ReportingConfig& config, Runtime* runtime);
 
-  ~MetricsReporter();
+  virtual ~MetricsReporter();
 
   // Creates and runs the background reporting thread.
   //
@@ -65,26 +111,35 @@
   // completes.
   void NotifyStartupCompleted();
 
-  bool IsPeriodicReportingEnabled() const;
-
-  // Changes the reporting period.
-  //
-  // This function is not thread safe and may only be called before the background reporting thread
-  // has been started.
-  void SetReportingPeriod(unsigned int period_seconds);
+  // Notifies the reporter that the app info was updated. This is used to detect / infer
+  // the compiler filter / reason of primary apks.
+  void NotifyAppInfoUpdated(AppInfo* app_info);
 
   // Requests a metrics report
   //
   // If synchronous is set to true, this function will block until the report has completed.
   void RequestMetricsReport(bool synchronous = true);
 
+  // Reloads the metrics config from the given value.
+  // Can only be called before starting the background thread.
+  void ReloadConfig(const ReportingConfig& config);
+
   void SetCompilationInfo(CompilationReason compilation_reason,
-                          CompilerFilter::Filter compiler_filter);
+                          CompilerFilterReporting compiler_filter);
 
   static constexpr const char* kBackgroundThreadName = "Metrics Background Reporting Thread";
 
+ protected:
+  // Returns the metrics to be reported.
+  // This exists only for testing purposes so that we can verify reporting with minimum
+  // runtime interference.
+  virtual const ArtMetrics* GetMetrics();
+
+  MetricsReporter(const ReportingConfig& config, Runtime* runtime);
+
  private:
-  MetricsReporter(ReportingConfig config, Runtime* runtime);
+  // Whether or not we should reporting metrics according to the sampling rate.
+  bool IsMetricsReportingEnabled(const SessionData& session_data) const;
 
   // The background reporting thread main loop.
   void BackgroundThreadRun();
@@ -95,10 +150,29 @@
   // Outputs the current state of the metrics to the destination set by config_.
   void ReportMetrics();
 
+  // Updates the session data in all the backends.
+  void UpdateSessionInBackends();
+
+  // Whether or not we should wait for startup before reporting for the first time.
+  bool ShouldReportAtStartup() const;
+
+  // Whether or not we should continue reporting (either because we still
+  // have periods to report, or because we are in continuous mode).
+  bool ShouldContinueReporting() const;
+
+  // Returns the next reporting period.
+  // Must be called only if ShouldContinueReporting() is true.
+  uint32_t GetNextPeriodSeconds();
+
   ReportingConfig config_;
   Runtime* runtime_;
   std::vector<std::unique_ptr<MetricsBackend>> backends_;
   std::optional<std::thread> thread_;
+  // Whether or not we reported the startup event.
+  bool startup_reported_;
+  // The index into period_spec.periods_seconds which tells the next delay in
+  // seconds for the next reporting.
+  uint32_t report_interval_index_;
 
   // A message indicating that the reporting thread should shut down.
   struct ShutdownRequestedMessage {};
@@ -106,12 +180,6 @@
   // A message indicating that app startup has completed.
   struct StartupCompletedMessage {};
 
-  // A message marking the beginning of a metrics logging session.
-  //
-  // The primary purpose of this is to pass the session metadata from the Runtime to the metrics
-  // backends.
-  struct BeginSessionMessage{ SessionData session_data; };
-
   // A message requesting an explicit metrics report.
   //
   // The synchronous field specifies whether the reporting thread will send a message back when
@@ -122,12 +190,11 @@
 
   struct CompilationInfoMessage {
     CompilationReason compilation_reason;
-    CompilerFilter::Filter compiler_filter;
+    CompilerFilterReporting compiler_filter;
   };
 
   MessageQueue<ShutdownRequestedMessage,
                StartupCompletedMessage,
-               BeginSessionMessage,
                RequestMetricsReportMessage,
                CompilationInfoMessage>
       messages_;
@@ -139,6 +206,8 @@
 
   SessionData session_data_{};
   bool session_started_{false};
+
+  friend class MetricsReporterTest;
 };
 
 }  // namespace metrics
diff --git a/runtime/metrics/reporter_test.cc b/runtime/metrics/reporter_test.cc
new file mode 100644
index 0000000..3807c77
--- /dev/null
+++ b/runtime/metrics/reporter_test.cc
@@ -0,0 +1,466 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "reporter.h"
+
+#include "gtest/gtest.h"
+
+#include "common_runtime_test.h"
+#include "base/metrics/metrics.h"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic error "-Wconversion"
+
+namespace art {
+namespace metrics {
+
+// Helper class to verify the metrics reporter.
+// The functionality is identical to the MetricsReporter with the exception of
+// the metrics source. Instead of taking its metrics from the current Runtime,
+// this class will keep its own copy so that it does not get interference from
+// other runtime setup logic.
+class MockMetricsReporter : public MetricsReporter {
+ protected:
+  MockMetricsReporter(const ReportingConfig& config, Runtime* runtime) :
+      MetricsReporter(config, runtime),
+      art_metrics_(new ArtMetrics()) {}
+
+  const ArtMetrics* GetMetrics() override {
+    return art_metrics_.get();
+  }
+
+  std::unique_ptr<ArtMetrics> art_metrics_;
+
+  friend class MetricsReporterTest;
+};
+
+// A test backend which keeps track of all metrics reporting.
+class TestBackend : public MetricsBackend {
+ public:
+  struct Report {
+    uint64_t timestamp_millis;
+    SafeMap<DatumId, uint64_t> data;
+  };
+
+  void BeginOrUpdateSession(const SessionData& session_data) override {
+    session_data_ = session_data;
+  }
+
+  void BeginReport(uint64_t timestamp_millis) override {
+    current_report_.reset(new Report());
+    current_report_->timestamp_millis = timestamp_millis;
+  }
+
+  void ReportCounter(DatumId counter_type, uint64_t value) override {
+    current_report_->data.Put(counter_type, value);
+  }
+
+  void ReportHistogram(DatumId histogram_type ATTRIBUTE_UNUSED,
+                       int64_t low_value ATTRIBUTE_UNUSED,
+                       int64_t high_value ATTRIBUTE_UNUSED,
+                       const std::vector<uint32_t>& buckets ATTRIBUTE_UNUSED) override {
+    // TODO: nothing yet. We should implement and test histograms as well.
+  }
+
+  void EndReport() override {
+    reports_.push_back(*current_report_);
+    current_report_ = nullptr;
+  }
+
+  const std::vector<Report>& GetReports() {
+    return reports_;
+  }
+
+  const SessionData& GetSessionData() {
+    return session_data_;
+  }
+
+ private:
+  SessionData session_data_;
+  std::vector<Report> reports_;
+  std::unique_ptr<Report> current_report_;
+};
+
+// The actual metrics test class
+class MetricsReporterTest : public CommonRuntimeTest {
+ protected:
+  void SetUp() override {
+    // Do the normal setup.
+    CommonRuntimeTest::SetUp();
+
+    // We need to start the runtime in order to run threads.
+    Thread::Current()->TransitionFromSuspendedToRunnable();
+    bool started = runtime_->Start();
+    CHECK(started);
+  }
+
+  // Configures the metric reporting.
+  void SetupReporter(const char* period_spec,
+                     uint32_t session_id = 1,
+                     uint32_t reporting_mods = 100) {
+    ReportingConfig config;
+    if (period_spec != nullptr) {
+      std::string error;
+      config.reporting_mods = reporting_mods;
+      config.period_spec = ReportingPeriodSpec::Parse(period_spec, &error);
+      ASSERT_TRUE(config.period_spec.has_value());
+    }
+
+    reporter_.reset(new MockMetricsReporter(std::move(config), Runtime::Current()));
+    backend_ = new TestBackend();
+    reporter_->backends_.emplace_back(backend_);
+
+    session_data_ = metrics::SessionData::CreateDefault();
+    session_data_.session_id = session_id;
+  }
+
+  void TearDown() override {
+    reporter_ = nullptr;
+    backend_ = nullptr;
+  }
+
+  bool ShouldReportAtStartup() {
+    return reporter_->ShouldReportAtStartup();
+  }
+
+  bool ShouldContinueReporting() {
+    return reporter_->ShouldContinueReporting();
+  }
+
+  uint32_t GetNextPeriodSeconds() {
+    return reporter_->GetNextPeriodSeconds();
+  }
+
+  void ReportMetrics() {
+    reporter_->ReportMetrics();
+  }
+
+  void NotifyStartupCompleted() {
+    reporter_->NotifyStartupCompleted();
+  }
+
+  // Starts the reporting thread and adds some metrics if necessary.
+  bool MaybeStartBackgroundThread(bool add_metrics) {
+    // TODO: set session_data.compilation_reason and session_data.compiler_filter
+    bool result = reporter_->MaybeStartBackgroundThread(session_data_);
+    if (add_metrics) {
+      reporter_->art_metrics_->JitMethodCompileCount()->Add(1);
+      reporter_->art_metrics_->ClassVerificationCount()->Add(2);
+    }
+    return result;
+  }
+
+  // Right now we either:
+  //   1) don't add metrics (with_metrics = false)
+  //   2) or always add the same metrics (see MaybeStartBackgroundThread)
+  // So we can write a global verify method.
+  void VerifyReports(
+        uint32_t size,
+        bool with_metrics,
+        CompilerFilterReporting filter = CompilerFilterReporting::kUnknown,
+        CompilationReason reason = CompilationReason::kUnknown) {
+    // TODO: we should iterate through all the other metrics to make sure they were not
+    // reported. However, we don't have an easy to use iteration mechanism over metrics yet.
+    // We should ads one
+    ASSERT_EQ(backend_->GetReports().size(), size);
+    for (auto report : backend_->GetReports()) {
+      ASSERT_EQ(report.data.Get(DatumId::kClassVerificationCount), with_metrics ? 2u : 0u);
+      ASSERT_EQ(report.data.Get(DatumId::kJitMethodCompileCount), with_metrics ? 1u : 0u);
+    }
+
+    ASSERT_EQ(backend_->GetSessionData().compiler_filter, filter);
+    ASSERT_EQ(backend_->GetSessionData().compilation_reason, reason);
+  }
+
+  // Sleeps until the backend received the give number of reports.
+  void WaitForReport(uint32_t report_count, uint32_t sleep_period_ms) {
+    while (true) {
+      if (backend_->GetReports().size() == report_count) {
+        return;
+      }
+      usleep(sleep_period_ms * 1000);
+    }
+  }
+
+  void NotifyAppInfoUpdated(AppInfo* app_info) {
+    reporter_->NotifyAppInfoUpdated(app_info);
+  }
+
+ private:
+  std::unique_ptr<MockMetricsReporter> reporter_;
+  TestBackend* backend_;
+  metrics::SessionData session_data_;
+};
+
+// Verifies startup reporting.
+TEST_F(MetricsReporterTest, StartupOnly) {
+  SetupReporter("S");
+
+  // Verify startup conditions
+  ASSERT_TRUE(ShouldReportAtStartup());
+  ASSERT_FALSE(ShouldContinueReporting());
+
+  // Start the thread and notify the startup. This will advance the state.
+  MaybeStartBackgroundThread(/*add_metrics=*/ true);
+
+  NotifyStartupCompleted();
+  WaitForReport(/*report_count=*/ 1, /*sleep_period_ms=*/ 50);
+  VerifyReports(/*size=*/ 1, /*with_metrics*/ true);
+
+  // We still should not report at period.
+  ASSERT_FALSE(ShouldContinueReporting());
+}
+
+// LARGE TEST: This test takes 1s to run.
+// Verifies startup reporting, followed by a fixed, one time only reporting.
+TEST_F(MetricsReporterTest, StartupAndPeriod) {
+  SetupReporter("S,1");
+
+  // Verify startup conditions
+  ASSERT_TRUE(ShouldReportAtStartup());
+  ASSERT_FALSE(ShouldContinueReporting());
+
+  // Start the thread and notify the startup. This will advance the state.
+  MaybeStartBackgroundThread(/*add_metrics=*/ true);
+  NotifyStartupCompleted();
+
+  // We're waiting for 2 reports: the startup one, and the 1s one.
+  WaitForReport(/*report_count=*/ 2, /*sleep_period_ms=*/ 500);
+  VerifyReports(/*size=*/ 2, /*with_metrics*/ true);
+
+  // We should not longer report at period.
+  ASSERT_FALSE(ShouldContinueReporting());
+}
+
+// LARGE TEST: This takes take 2s to run.
+// Verifies startup reporting, followed by continuous reporting.
+TEST_F(MetricsReporterTest, StartupAndPeriodContinuous) {
+  SetupReporter("S,1,*");
+
+  // Verify startup conditions
+  ASSERT_TRUE(ShouldReportAtStartup());
+  ASSERT_FALSE(ShouldContinueReporting());
+
+  // Start the thread and notify the startup. This will advance the state.
+  MaybeStartBackgroundThread(/*add_metrics=*/ true);
+  NotifyStartupCompleted();
+
+  // We're waiting for 3 reports: the startup one, and the 1s one.
+  WaitForReport(/*report_count=*/ 3, /*sleep_period_ms=*/ 500);
+  VerifyReports(/*size=*/ 3, /*with_metrics*/ true);
+
+  // We should keep reporting at period.
+  ASSERT_TRUE(ShouldContinueReporting());
+}
+
+// LARGE TEST: This test takes 1s to run.
+// Verifies a fixed, one time only reporting.
+TEST_F(MetricsReporterTest, OneTime) {
+  SetupReporter("1");
+
+  // Verify startup conditions
+  ASSERT_FALSE(ShouldReportAtStartup());
+  ASSERT_TRUE(ShouldContinueReporting());
+
+  // Start the thread and notify the startup. This will advance the state.
+  MaybeStartBackgroundThread(/*add_metrics=*/ true);
+
+  // We're waiting for 1 report
+  WaitForReport(/*report_count=*/ 1, /*sleep_period_ms=*/ 500);
+  VerifyReports(/*size=*/ 1, /*with_metrics*/ true);
+
+  // We should not longer report at period.
+  ASSERT_FALSE(ShouldContinueReporting());
+}
+
+// LARGE TEST: This takes take 5s to run.
+// Verifies a sequence of reporting, at different interval of times.
+TEST_F(MetricsReporterTest, PeriodContinuous) {
+  SetupReporter("1,2,*");
+
+  // Verify startup conditions
+  ASSERT_FALSE(ShouldReportAtStartup());
+  ASSERT_TRUE(ShouldContinueReporting());
+
+  // Start the thread and notify the startup. This will advance the state.
+  MaybeStartBackgroundThread(/*add_metrics=*/ true);
+  NotifyStartupCompleted();
+
+  // We're waiting for 2 reports: the startup one, and the 1s one.
+  WaitForReport(/*report_count=*/ 3, /*sleep_period_ms=*/ 500);
+  VerifyReports(/*size=*/ 3, /*with_metrics*/ true);
+
+  // We should keep reporting at period.
+  ASSERT_TRUE(ShouldContinueReporting());
+}
+
+// LARGE TEST: This test takes 1s to run.
+// Verifies reporting when no metrics where recorded.
+TEST_F(MetricsReporterTest, NoMetrics) {
+  SetupReporter("1");
+
+  // Verify startup conditions
+  ASSERT_FALSE(ShouldReportAtStartup());
+  ASSERT_TRUE(ShouldContinueReporting());
+
+  // Start the thread and notify the startup. This will advance the state.
+  MaybeStartBackgroundThread(/*add_metrics=*/ false);
+
+  // We're waiting for 1 report
+  WaitForReport(/*report_count=*/ 1, /*sleep_period_ms=*/ 500);
+  VerifyReports(/*size=*/ 1, /*with_metrics*/ false);
+
+  // We should not longer report at period.
+  ASSERT_FALSE(ShouldContinueReporting());
+}
+
+// Verify we don't start reporting if the sample rate is set to 0.
+TEST_F(MetricsReporterTest, SampleRateDisable) {
+  SetupReporter("1", /*session_id=*/ 1, /*reporting_mods=*/ 0);
+
+  // The background thread should not start.
+  ASSERT_FALSE(MaybeStartBackgroundThread(/*add_metrics=*/ false));
+
+  ASSERT_FALSE(ShouldReportAtStartup());
+  ASSERT_FALSE(ShouldContinueReporting());
+}
+
+// Verify we don't start reporting if the sample rate is low and the session does
+// not meet conditions.
+TEST_F(MetricsReporterTest, SampleRateDisable24) {
+  SetupReporter("1", /*session_id=*/ 125, /*reporting_mods=*/ 24);
+
+  // The background thread should not start.
+  ASSERT_FALSE(MaybeStartBackgroundThread(/*add_metrics=*/ false));
+
+  ASSERT_FALSE(ShouldReportAtStartup());
+  ASSERT_FALSE(ShouldContinueReporting());
+}
+
+// Verify we start reporting if the sample rate and the session meet
+// reporting conditions
+TEST_F(MetricsReporterTest, SampleRateEnable50) {
+  SetupReporter("1", /*session_id=*/ 125, /*reporting_mods=*/ 50);
+
+  // The background thread should not start.
+  ASSERT_TRUE(MaybeStartBackgroundThread(/*add_metrics=*/ false));
+
+  ASSERT_FALSE(ShouldReportAtStartup());
+  ASSERT_TRUE(ShouldContinueReporting());
+}
+
+// Verify we start reporting if the sample rate and the session meet
+// reporting conditions
+TEST_F(MetricsReporterTest, SampleRateEnableAll) {
+  SetupReporter("1", /*session_id=*/ 1099, /*reporting_mods=*/ 100);
+
+  // The background thread should start.
+  ASSERT_TRUE(MaybeStartBackgroundThread(/*add_metrics=*/ false));
+
+  ASSERT_FALSE(ShouldReportAtStartup());
+  ASSERT_TRUE(ShouldContinueReporting());
+}
+
+TEST_F(MetricsReporterTest, CompilerFilter) {
+  SetupReporter("1", /*session_id=*/ 1099, /*reporting_mods=*/ 100);
+  ASSERT_TRUE(MaybeStartBackgroundThread(/*add_metrics=*/ true));
+
+  AppInfo app_info;
+  app_info.RegisterOdexStatus(
+      "code_location",
+      "verify",
+      "install",
+      "odex_status");
+  app_info.RegisterAppInfo(
+      "package_name",
+      std::vector<std::string>({"code_location"}),
+      "",
+      "",
+      AppInfo::CodeType::kPrimaryApk);
+  NotifyAppInfoUpdated(&app_info);
+
+  WaitForReport(/*report_count=*/ 1, /*sleep_period_ms=*/ 500);
+  VerifyReports(
+      /*size=*/ 1,
+      /*with_metrics*/ true,
+      CompilerFilterReporting::kVerify,
+      CompilationReason::kInstall);
+}
+
+// Test class for period spec parsing
+class ReportingPeriodSpecTest : public testing::Test {
+ public:
+  void VerifyFalse(const std::string& spec_str) {
+    Verify(spec_str, false, false, false, {});
+  }
+
+  void VerifyTrue(
+      const std::string& spec_str,
+      bool startup_first,
+      bool continuous,
+      std::vector<uint32_t> periods) {
+    Verify(spec_str, true, startup_first, continuous, periods);
+  }
+
+  void Verify(
+      const std::string& spec_str,
+      bool valid,
+      bool startup_first,
+      bool continuous,
+      std::vector<uint32_t> periods) {
+    std::string error_msg;
+    std::optional<ReportingPeriodSpec> spec = ReportingPeriodSpec::Parse(spec_str, &error_msg);
+
+    ASSERT_EQ(valid, spec.has_value()) << spec_str;
+    if (valid) {
+        ASSERT_EQ(spec->spec, spec_str) << spec_str;
+        ASSERT_EQ(spec->report_startup_first, startup_first) << spec_str;
+        ASSERT_EQ(spec->continuous_reporting, continuous) << spec_str;
+        ASSERT_EQ(spec->periods_seconds, periods) << spec_str;
+    }
+  }
+};
+
+TEST_F(ReportingPeriodSpecTest, ParseTestsInvalid) {
+  VerifyFalse("");
+  VerifyFalse("*");
+  VerifyFalse("S,*");
+  VerifyFalse("foo");
+  VerifyFalse("-1");
+  VerifyFalse("1,S");
+  VerifyFalse("*,1");
+  VerifyFalse("1,2,3,-1,3");
+  VerifyFalse("1,*,2");
+  VerifyFalse("1,S,2");
+}
+
+TEST_F(ReportingPeriodSpecTest, ParseTestsValid) {
+  VerifyTrue("S", true, false, {});
+  VerifyTrue("S,1", true, false, {1});
+  VerifyTrue("S,1,2,3,4", true, false, {1, 2, 3, 4});
+  VerifyTrue("S,1,*", true, true, {1});
+  VerifyTrue("S,1,2,3,4,*", true, true, {1, 2, 3, 4});
+
+  VerifyTrue("1", false, false, {1});
+  VerifyTrue("1,2,3,4", false, false, {1, 2, 3, 4});
+  VerifyTrue("1,*", false, true, {1});
+  VerifyTrue("1,2,3,4,*", false, true, {1, 2, 3, 4});
+}
+
+}  // namespace metrics
+}  // namespace art
+
+#pragma clang diagnostic pop  // -Wconversion
diff --git a/runtime/metrics/statsd.cc b/runtime/metrics/statsd.cc
index dac41b9..bcf1a14 100644
--- a/runtime/metrics/statsd.cc
+++ b/runtime/metrics/statsd.cc
@@ -16,6 +16,7 @@
 
 #include "statsd.h"
 
+#include "arch/instruction_set.h"
 #include "base/compiler_filter.h"
 #include "base/metrics/metrics.h"
 #include "statslog_art.h"
@@ -31,6 +32,7 @@
 // EncodeDatumId returns a std::optional that provides a enum value from atoms.proto if the datum is
 // one that we support logging to statsd. The list of datums that ART collects is a superset of what
 // we report to statsd. Therefore, we only have mappings for the DatumIds that statsd recognizes.
+// Also it must be noted that histograms are not handled yet by statsd yet.
 //
 // Other code can use whether the result of this function has a value to decide whether to report
 // the atom to statsd.
@@ -42,18 +44,18 @@
     case DatumId::kClassVerificationTotalTime:
       return std::make_optional(
           statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_CLASS_VERIFICATION_TIME_COUNTER_MICROS);
-    case DatumId::kJitMethodCompileTime:
+    case DatumId::kJitMethodCompileTotalTime:
       return std::make_optional(
-          statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_JIT_METHOD_COMPILE_TIME_HISTO_MICROS);
+          statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_JIT_METHOD_COMPILE_TIME_MICROS);
     case DatumId::kClassLoadingTotalTime:
       return std::make_optional(
           statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_CLASS_LOADING_TIME_COUNTER_MICROS);
     case DatumId::kClassVerificationCount:
       return std::make_optional(
           statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_CLASS_VERIFICATION_COUNT);
-    case DatumId::kMutatorPauseTimeDuringGC:
+    case DatumId::kWorldStopTimeDuringGCAvg:
       return std::make_optional(
-          statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_GC_MUTATOR_PAUSE_TIME_COUNTER_MICROS);
+          statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_GC_WORLD_STOP_TIME_AVG_MICROS);
     case DatumId::kYoungGcCount:
       return std::make_optional(
           statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_COUNT);
@@ -63,9 +65,6 @@
     case DatumId::kTotalBytesAllocated:
       return std::make_optional(
           statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_GC_TOTAL_BYTES_ALLOCATED);
-    case DatumId::kTotalGcMetaDataSize:
-      return std::make_optional(
-          statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_GC_TOTAL_METADATA_SIZE_BYTES);
     case DatumId::kYoungGcCollectionTime:
       return std::make_optional(
           statsd::
@@ -76,42 +75,69 @@
     case DatumId::kYoungGcThroughput:
       return std::make_optional(
           statsd::
-              ART_DATUM_REPORTED__KIND__ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_THROUGHPUT_MB_PER_SEC);
+              ART_DATUM_REPORTED__KIND__ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_THROUGHPUT_HISTO_MB_PER_SEC);
     case DatumId::kFullGcThroughput:
       return std::make_optional(
           statsd::
-              ART_DATUM_REPORTED__KIND__ART_DATUM_GC_FULL_HEAP_COLLECTION_THROUGHPUT_MB_PER_SEC);
+              ART_DATUM_REPORTED__KIND__ART_DATUM_GC_FULL_HEAP_COLLECTION_THROUGHPUT_HISTO_MB_PER_SEC);
     case DatumId::kJitMethodCompileCount:
       return std::make_optional(
           statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_JIT_METHOD_COMPILE_COUNT);
+    case DatumId::kYoungGcTracingThroughput:
+      return std::make_optional(
+          statsd::
+              ART_DATUM_REPORTED__KIND__ART_DATUM_GC_YOUNG_GENERATION_TRACING_THROUGHPUT_HISTO_MB_PER_SEC);
+    case DatumId::kFullGcTracingThroughput:
+      return std::make_optional(
+          statsd::
+              ART_DATUM_REPORTED__KIND__ART_DATUM_GC_FULL_HEAP_TRACING_THROUGHPUT_HISTO_MB_PER_SEC);
+    case DatumId::kTotalGcCollectionTime:
+      return std::make_optional(
+          statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_GC_TOTAL_COLLECTION_TIME_MS);
+    case DatumId::kYoungGcThroughputAvg:
+      return std::make_optional(
+          statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_THROUGHPUT_AVG_MB_PER_SEC);
+    case DatumId::kFullGcThroughputAvg:
+      return std::make_optional(
+          statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_GC_FULL_HEAP_COLLECTION_THROUGHPUT_AVG_MB_PER_SEC);
+    case DatumId::kYoungGcTracingThroughputAvg:
+      return std::make_optional(
+          statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_GC_YOUNG_GENERATION_TRACING_THROUGHPUT_AVG_MB_PER_SEC);
+    case DatumId::kFullGcTracingThroughputAvg:
+      return std::make_optional(
+          statsd::ART_DATUM_REPORTED__KIND__ART_DATUM_GC_FULL_HEAP_TRACING_THROUGHPUT_AVG_MB_PER_SEC);
   }
 }
 
-constexpr int32_t EncodeCompileFilter(std::optional<CompilerFilter::Filter> filter) {
-  if (filter.has_value()) {
-    switch (filter.value()) {
-      case CompilerFilter::kAssumeVerified:
-        return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_ASSUMED_VERIFIED;
-      case CompilerFilter::kExtract:
-        return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_EXTRACT;
-      case CompilerFilter::kVerify:
-        return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_VERIFY;
-      case CompilerFilter::kSpaceProfile:
-        return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_SPACE_PROFILE;
-      case CompilerFilter::kSpace:
-        return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_SPACE;
-      case CompilerFilter::kSpeedProfile:
-        return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_SPEED_PROFILE;
-      case CompilerFilter::kSpeed:
-        return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_SPEED;
-      case CompilerFilter::kEverythingProfile:
-        return statsd::
-            ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_EVERYTHING_PROFILE;
-      case CompilerFilter::kEverything:
-        return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_EVERYTHING;
-    }
-  } else {
-    return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_UNKNOWN;
+constexpr int32_t EncodeCompileFilter(CompilerFilterReporting filter) {
+  switch (filter) {
+    case CompilerFilterReporting::kAssumeVerified:
+      return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_ASSUMED_VERIFIED;
+    case CompilerFilterReporting::kExtract:
+      return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_EXTRACT;
+    case CompilerFilterReporting::kVerify:
+      return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_VERIFY;
+    case CompilerFilterReporting::kSpaceProfile:
+      return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_SPACE_PROFILE;
+    case CompilerFilterReporting::kSpace:
+      return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_SPACE;
+    case CompilerFilterReporting::kSpeedProfile:
+      return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_SPEED_PROFILE;
+    case CompilerFilterReporting::kSpeed:
+      return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_SPEED;
+    case CompilerFilterReporting::kEverythingProfile:
+      return statsd::
+          ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_EVERYTHING_PROFILE;
+    case CompilerFilterReporting::kEverything:
+      return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_EVERYTHING;
+    case CompilerFilterReporting::kError:
+      return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_ERROR;
+    case CompilerFilterReporting::kUnknown:
+       return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_UNKNOWN;
+    case CompilerFilterReporting::kRunFromApk:
+       return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_FAKE_RUN_FROM_APK;
+    case CompilerFilterReporting::kRunFromApkFallback:
+       return statsd::ART_DATUM_REPORTED__COMPILE_FILTER__ART_COMPILATION_FILTER_FAKE_RUN_FROM_APK_FALLBACK;
   }
 }
 
@@ -160,9 +186,28 @@
   }
 }
 
+constexpr int32_t EncodeInstructionSet(InstructionSet isa) {
+  switch (isa) {
+    case InstructionSet::kArm:
+      // Fall-through.
+    case InstructionSet::kThumb2:
+      return statsd::ART_DATUM_REPORTED__ISA__ART_ISA_ARM;
+    case InstructionSet::kArm64:
+      return statsd::ART_DATUM_REPORTED__ISA__ART_ISA_ARM64;
+    case InstructionSet::kX86:
+      return statsd::ART_DATUM_REPORTED__ISA__ART_ISA_X86;
+    case InstructionSet::kX86_64:
+      return statsd::ART_DATUM_REPORTED__ISA__ART_ISA_X86_64;
+    case InstructionSet::kNone:
+      return statsd::ART_DATUM_REPORTED__ISA__ART_ISA_UNKNOWN;
+  }
+}
+
 class StatsdBackend : public MetricsBackend {
  public:
-  void BeginSession(const SessionData& session_data) override { session_data_ = session_data; }
+  void BeginOrUpdateSession(const SessionData& session_data) override {
+    session_data_ = session_data;
+  }
 
  protected:
   void BeginReport(uint64_t timestamp_since_start_ms) override {
@@ -185,7 +230,7 @@
           static_cast<int64_t>(value),
           statsd::ART_DATUM_REPORTED__DEX_METADATA_TYPE__ART_DEX_METADATA_TYPE_UNKNOWN,
           statsd::ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_UNKNOWN,
-          statsd::ART_DATUM_REPORTED__ISA__ART_ISA_UNKNOWN);
+          EncodeInstructionSet(kRuntimeISA));
     }
   }
 
diff --git a/runtime/monitor_android.cc b/runtime/monitor_android.cc
index 19e1f3d..f661631 100644
--- a/runtime/monitor_android.cc
+++ b/runtime/monitor_android.cc
@@ -24,6 +24,8 @@
 #include <log/log_event_list.h>
 
 #include "art_method.h"
+#include "jni/jni_env_ext.h"
+#include "palette/palette.h"
 #include "thread.h"
 
 #define EVENT_LOG_TAG_dvm_lock_sample 20003
@@ -41,14 +43,13 @@
   int32_t owner_line_number;
   TranslateLocation(owner_method, owner_dex_pc, &owner_filename, &owner_line_number);
 
-  // Emit the process name, <= 37 bytes.
+  // Emit the process name, <= 33 bytes.
+  char proc_name[33] = {};
   {
     int fd = open("/proc/self/cmdline", O_RDONLY  | O_CLOEXEC);
-    char procName[33];
-    memset(procName, 0, sizeof(procName));
-    read(fd, procName, sizeof(procName) - 1);
+    read(fd, proc_name, sizeof(proc_name) - 1);
     close(fd);
-    ctx << procName;
+    ctx << proc_name;
   }
 
   // Emit the sensitive thread ("main thread") status. We follow tradition that this corresponds
@@ -58,20 +59,19 @@
   ctx << (Thread::IsSensitiveThread() ? kIsSensitive : kIsNotSensitive);
 
   // Emit self thread name string.
-  {
-    std::string thread_name;
-    self->GetThreadName(thread_name);
-    ctx << thread_name;
-  }
+  std::string thread_name;
+  self->GetThreadName(thread_name);
+  ctx << thread_name;
 
   // Emit the wait time.
   ctx << wait_ms;
 
   const char* filename = nullptr;
+  int32_t line_number;
+  std::string method_name;
   {
     uint32_t pc;
     ArtMethod* m = self->GetCurrentMethod(&pc);
-    int32_t line_number;
     TranslateLocation(m, pc, &filename, &line_number);
 
     // Emit the source code file name.
@@ -81,7 +81,8 @@
     ctx << line_number;
 
     // Emit the method name.
-    ctx << ArtMethod::PrettyMethod(m);
+    method_name = ArtMethod::PrettyMethod(m);
+    ctx << method_name;
   }
 
   // Emit the lock owner source code file name.
@@ -97,12 +98,25 @@
   ctx << owner_line_number;
 
   // Emit the owner method name.
-  ctx << ArtMethod::PrettyMethod(owner_method);
+  std::string owner_method_name = ArtMethod::PrettyMethod(owner_method);
+  ctx << owner_method_name;
 
   // Emit the sample percentage.
   ctx << sample_percent;
 
   ctx << LOG_ID_EVENTS;
+
+  // Now report to other interested parties.
+  PaletteReportLockContention(self->GetJniEnv(),
+                              wait_ms,
+                              filename,
+                              line_number,
+                              method_name.c_str(),
+                              owner_filename,
+                              owner_line_number,
+                              owner_method_name.c_str(),
+                              proc_name,
+                              thread_name.c_str());
 }
 
 }  // namespace art
diff --git a/runtime/native/dalvik_system_VMRuntime.cc b/runtime/native/dalvik_system_VMRuntime.cc
index d46a36f..8425904 100644
--- a/runtime/native/dalvik_system_VMRuntime.cc
+++ b/runtime/native/dalvik_system_VMRuntime.cc
@@ -370,11 +370,11 @@
  */
 static void VMRuntime_registerAppInfo(JNIEnv* env,
                                       jclass clazz ATTRIBUTE_UNUSED,
-                                      jstring package_name ATTRIBUTE_UNUSED,
+                                      jstring package_name,
                                       jstring cur_profile_file,
                                       jstring ref_profile_file,
                                       jobjectArray code_paths,
-                                      jint code_path_type ATTRIBUTE_UNUSED) {
+                                      jint code_path_type) {
   std::vector<std::string> code_paths_vec;
   int code_paths_length = env->GetArrayLength(code_paths);
   for (int i = 0; i < code_paths_length; i++) {
@@ -392,7 +392,16 @@
   std::string ref_profile_file_str(raw_ref_profile_file);
   env->ReleaseStringUTFChars(ref_profile_file, raw_ref_profile_file);
 
-  Runtime::Current()->RegisterAppInfo(code_paths_vec, cur_profile_file_str, ref_profile_file_str);
+  const char* raw_package_name = env->GetStringUTFChars(package_name, nullptr);
+  std::string package_name_str(raw_package_name);
+  env->ReleaseStringUTFChars(package_name, raw_package_name);
+
+  Runtime::Current()->RegisterAppInfo(
+      package_name_str,
+      code_paths_vec,
+      cur_profile_file_str,
+      ref_profile_file_str,
+      static_cast<int32_t>(code_path_type));
 }
 
 static jboolean VMRuntime_isBootClassPathOnDisk(JNIEnv* env, jclass, jstring java_instruction_set) {
diff --git a/runtime/native/dalvik_system_VMStack.cc b/runtime/native/dalvik_system_VMStack.cc
index 9d2dfac..e88516e 100644
--- a/runtime/native/dalvik_system_VMStack.cc
+++ b/runtime/native/dalvik_system_VMStack.cc
@@ -59,7 +59,6 @@
     ThreadList* thread_list = Runtime::Current()->GetThreadList();
     bool timed_out;
     Thread* thread = thread_list->SuspendThreadByPeer(peer,
-                                                      /* request_suspension= */ true,
                                                       SuspendReason::kInternal,
                                                       &timed_out);
     if (thread != nullptr) {
diff --git a/runtime/native/dalvik_system_ZygoteHooks.cc b/runtime/native/dalvik_system_ZygoteHooks.cc
index 2c18ddb..050233d 100644
--- a/runtime/native/dalvik_system_ZygoteHooks.cc
+++ b/runtime/native/dalvik_system_ZygoteHooks.cc
@@ -442,11 +442,17 @@
   Runtime::Current()->SetZygoteNoThreadSection(false);
 }
 
-static jboolean ZygoteHooks_nativeZygoteJitEnabled(JNIEnv* env ATTRIBUTE_UNUSED,
-                                                   jclass klass ATTRIBUTE_UNUSED) {
+static jboolean ZygoteHooks_nativeZygoteLongSuspendOk(JNIEnv* env ATTRIBUTE_UNUSED,
+                                                    jclass klass ATTRIBUTE_UNUSED) {
+  // Indefinite thread suspensions are not OK if we're supposed to be JIT-compiling for other
+  // processes.  We only care about JIT compilation that affects other processes.  The zygote
+  // itself doesn't run appreciable amounts of Java code when running single-threaded, so
+  // suspending the JIT in non-jit-zygote mode is OK.
+  // TODO: Make this potentially return true once we're done with JIT compilation in JIT Zygote.
   // Only called in zygote. Thus static is OK here.
-  static bool result = jit::Jit::InZygoteUsingJit();
-  return result ? JNI_TRUE : JNI_FALSE;
+  static bool isJitZygote = jit::Jit::InZygoteUsingJit();
+  static bool explicitlyDisabled = Runtime::Current()->IsJavaZygoteForkLoopRequired();
+  return (isJitZygote || explicitlyDisabled) ? JNI_FALSE : JNI_TRUE;
 }
 
 
@@ -455,7 +461,7 @@
   NATIVE_METHOD(ZygoteHooks, nativePostZygoteFork, "()V"),
   NATIVE_METHOD(ZygoteHooks, nativePostForkSystemServer, "(I)V"),
   NATIVE_METHOD(ZygoteHooks, nativePostForkChild, "(JIZZLjava/lang/String;)V"),
-  NATIVE_METHOD(ZygoteHooks, nativeZygoteJitEnabled, "()Z"),
+  NATIVE_METHOD(ZygoteHooks, nativeZygoteLongSuspendOk, "()Z"),
   NATIVE_METHOD(ZygoteHooks, startZygoteNoThreadCreation, "()V"),
   NATIVE_METHOD(ZygoteHooks, stopZygoteNoThreadCreation, "()V"),
 };
diff --git a/runtime/native/java_lang_Thread.cc b/runtime/native/java_lang_Thread.cc
index 37b3fe6..c3b4fe0 100644
--- a/runtime/native/java_lang_Thread.cc
+++ b/runtime/native/java_lang_Thread.cc
@@ -148,7 +148,6 @@
   bool timed_out;
   // Take suspend thread lock to avoid races with threads trying to suspend this one.
   Thread* thread = thread_list->SuspendThreadByPeer(peer,
-                                                    /* request_suspension= */ true,
                                                     SuspendReason::kInternal,
                                                     &timed_out);
   if (thread != nullptr) {
diff --git a/runtime/oat.h b/runtime/oat.h
index ab45b84..31a328d 100644
--- a/runtime/oat.h
+++ b/runtime/oat.h
@@ -32,8 +32,8 @@
 class PACKED(4) OatHeader {
  public:
   static constexpr std::array<uint8_t, 4> kOatMagic { { 'o', 'a', 't', '\n' } };
-  // Last oat version changed reason: Apex versions in key/value store.
-  static constexpr std::array<uint8_t, 4> kOatVersion { { '1', '9', '5', '\0' } };
+  // Last oat version changed reason: Disable partial LSE b/197818595.
+  static constexpr std::array<uint8_t, 4> kOatVersion { { '1', '9', '9', '\0' } };
 
   static constexpr const char* kDex2OatCmdLineKey = "dex2oat-cmdline";
   static constexpr const char* kDebuggableKey = "debuggable";
diff --git a/runtime/oat_file.cc b/runtime/oat_file.cc
index 49d5e61..14e7a1b 100644
--- a/runtime/oat_file.cc
+++ b/runtime/oat_file.cc
@@ -168,7 +168,7 @@
 
   bool Setup(int zip_fd, ArrayRef<const std::string> dex_filenames, std::string* error_msg);
 
-  void Setup(const std::vector<const DexFile*>& dex_files);
+  bool Setup(const std::vector<const DexFile*>& dex_files, std::string* error_msg);
 
   // Setters exposed for ElfOatFile.
 
@@ -476,18 +476,71 @@
   return true;
 }
 
-void OatFileBase::Setup(const std::vector<const DexFile*>& dex_files) {
+static bool ComputeAndCheckTypeLookupTableData(const DexFile::Header& header,
+                                               const uint8_t* type_lookup_table_start,
+                                               const VdexFile* vdex_file,
+                                               const uint8_t** type_lookup_table_data,
+                                               std::string* error_msg) {
+  if (type_lookup_table_start == nullptr ||
+      reinterpret_cast<const uint32_t*>(type_lookup_table_start)[0] == 0) {
+    *type_lookup_table_data = nullptr;
+    return true;
+  }
+
+  *type_lookup_table_data = type_lookup_table_start + sizeof(uint32_t);
+  size_t expected_table_size = TypeLookupTable::RawDataLength(header.class_defs_size_);
+  size_t found_size = reinterpret_cast<const uint32_t*>(type_lookup_table_start)[0];
+  if (UNLIKELY(found_size != expected_table_size)) {
+    *error_msg =
+        StringPrintf("In vdex file '%s' unexpected type lookup table size: found %zu, expected %zu",
+                     vdex_file->GetName().c_str(),
+                     found_size,
+                     expected_table_size);
+    return false;
+  }
+  if (UNLIKELY(!vdex_file->Contains(*type_lookup_table_data))) {
+    *error_msg =
+        StringPrintf("In vdex file '%s' found invalid type lookup table pointer %p not in [%p, %p]",
+                     vdex_file->GetName().c_str(),
+                     type_lookup_table_data,
+                     vdex_file->Begin(),
+                     vdex_file->End());
+    return false;
+  }
+  if (UNLIKELY(!vdex_file->Contains(*type_lookup_table_data + expected_table_size - 1))) {
+    *error_msg =
+        StringPrintf("In vdex file '%s' found overflowing type lookup table %p not in [%p, %p]",
+                     vdex_file->GetName().c_str(),
+                     type_lookup_table_data + expected_table_size,
+                     vdex_file->Begin(),
+                     vdex_file->End());
+    return false;
+  }
+  if (UNLIKELY(!IsAligned<4>(type_lookup_table_start))) {
+    *error_msg =
+        StringPrintf("In vdex file '%s' found invalid type lookup table alignment %p",
+                     vdex_file->GetName().c_str(),
+                     type_lookup_table_start);
+    return false;
+  }
+  return true;
+}
+
+bool OatFileBase::Setup(const std::vector<const DexFile*>& dex_files, std::string* error_msg) {
   uint32_t i = 0;
   const uint8_t* type_lookup_table_start = nullptr;
   for (const DexFile* dex_file : dex_files) {
-    type_lookup_table_start = vdex_->GetNextTypeLookupTableData(type_lookup_table_start, i++);
     std::string dex_location = dex_file->GetLocation();
     std::string canonical_location = DexFileLoader::GetDexCanonicalLocation(dex_location.c_str());
 
+    type_lookup_table_start = vdex_->GetNextTypeLookupTableData(type_lookup_table_start, i++);
     const uint8_t* type_lookup_table_data = nullptr;
-    if (type_lookup_table_start != nullptr &&
-        (reinterpret_cast<uint32_t*>(type_lookup_table_start[0]) != 0)) {
-      type_lookup_table_data = type_lookup_table_start + sizeof(uint32_t);
+    if (!ComputeAndCheckTypeLookupTableData(dex_file->GetHeader(),
+                                            type_lookup_table_start,
+                                            vdex_.get(),
+                                            &type_lookup_table_data,
+                                            error_msg)) {
+      return false;
     }
     // Create an OatDexFile and add it to the owning container.
     OatDexFile* oat_dex_file = new OatDexFile(
@@ -497,7 +550,6 @@
         dex_location,
         canonical_location,
         type_lookup_table_data);
-    dex_file->SetOatDexFile(oat_dex_file);
     oat_dex_files_storage_.push_back(oat_dex_file);
 
     // Add the location and canonical location (if different) to the oat_dex_files_ table.
@@ -508,6 +560,11 @@
       oat_dex_files_.Put(canonical_key, oat_dex_file);
     }
   }
+  // Now that we've created all the OatDexFile, update the dex files.
+  for (i = 0; i < dex_files.size(); ++i) {
+    dex_files[i]->SetOatDexFile(oat_dex_files_storage_[i]);
+  }
+  return true;
 }
 
 bool OatFileBase::Setup(int zip_fd,
@@ -1583,7 +1640,11 @@
     oat_file->SetVdex(vdex_file.release());
     oat_file->SetupHeader(dex_files.size());
     // Initialize OatDexFiles.
-    oat_file->Setup(dex_files);
+    std::string error_msg;
+    if (!oat_file->Setup(dex_files, &error_msg)) {
+      LOG(WARNING) << "Could not create in-memory vdex file: " << error_msg;
+      return nullptr;
+    }
     return oat_file.release();
   }
 
@@ -1601,6 +1662,25 @@
       for (const uint8_t* dex_file_start = vdex_file->GetNextDexFileData(nullptr, i);
            dex_file_start != nullptr;
            dex_file_start = vdex_file->GetNextDexFileData(dex_file_start, ++i)) {
+        const DexFile::Header* header = reinterpret_cast<const DexFile::Header*>(dex_file_start);
+        if (UNLIKELY(!vdex_file->Contains(dex_file_start))) {
+          *error_msg =
+              StringPrintf("In vdex file '%s' found invalid dex file pointer %p not in [%p, %p]",
+                           dex_location.c_str(),
+                           dex_file_start,
+                           vdex_file->Begin(),
+                           vdex_file->End());
+          return nullptr;
+        }
+        if (UNLIKELY(!vdex_file->Contains(dex_file_start + header->file_size_ - 1))) {
+          *error_msg =
+              StringPrintf("In vdex file '%s' found overflowing dex file %p not in [%p, %p]",
+                           dex_location.c_str(),
+                           dex_file_start + header->file_size_,
+                           vdex_file->Begin(),
+                           vdex_file->End());
+          return nullptr;
+        }
         if (UNLIKELY(!DexFileLoader::IsVersionAndMagicValid(dex_file_start))) {
           *error_msg =
               StringPrintf("In vdex file '%s' found dex file with invalid dex file version",
@@ -1612,10 +1692,14 @@
         std::string canonical_location = DexFileLoader::GetDexCanonicalLocation(location.c_str());
         type_lookup_table_start = vdex_file->GetNextTypeLookupTableData(type_lookup_table_start, i);
         const uint8_t* type_lookup_table_data = nullptr;
-        if (type_lookup_table_start != nullptr &&
-            (reinterpret_cast<uint32_t*>(type_lookup_table_start[0]) != 0)) {
-          type_lookup_table_data = type_lookup_table_start + sizeof(uint32_t);
+        if (!ComputeAndCheckTypeLookupTableData(*header,
+                                                type_lookup_table_start,
+                                                vdex_file,
+                                                &type_lookup_table_data,
+                                                error_msg)) {
+          return nullptr;
         }
+
         OatDexFile* oat_dex_file = new OatDexFile(oat_file.get(),
                                                   dex_file_start,
                                                   vdex_file->GetLocationChecksum(i),
@@ -1656,7 +1740,9 @@
         return nullptr;
       }
       oat_file->SetupHeader(oat_file->external_dex_files_.size());
-      oat_file->Setup(MakeNonOwningPointerVector(oat_file->external_dex_files_));
+      if (!oat_file->Setup(MakeNonOwningPointerVector(oat_file->external_dex_files_), error_msg)) {
+        return nullptr;
+      }
     }
 
     return oat_file.release();
@@ -1665,13 +1751,12 @@
   void SetupHeader(size_t number_of_dex_files) {
     DCHECK(!IsExecutable());
 
-    // Create a fake OatHeader with a key store containing only the compiler
-    // filter (it helps debugging and is required by
-    // OatHeader::GetCompilerFilter).
+    // Create a fake OatHeader with a key store to help debugging.
     std::unique_ptr<const InstructionSetFeatures> isa_features =
         InstructionSetFeatures::FromCppDefines();
     SafeMap<std::string, std::string> store;
     store.Put(OatHeader::kCompilerFilter, CompilerFilter::NameOfFilter(CompilerFilter::kVerify));
+    store.Put(OatHeader::kCompilationReasonKey, "vdex");
     store.Put(OatHeader::kConcurrentCopying,
               kUseReadBarrier ? OatHeader::kTrueValue : OatHeader::kFalseValue);
     oat_header_.reset(OatHeader::Create(kRuntimeISA,
diff --git a/runtime/oat_file_assistant.cc b/runtime/oat_file_assistant.cc
index 038fc0f..2cbc1ea 100644
--- a/runtime/oat_file_assistant.cc
+++ b/runtime/oat_file_assistant.cc
@@ -454,7 +454,7 @@
   // zip_file_only_contains_uncompressed_dex_ is only set during fetching the dex checksums.
   DCHECK(required_dex_checksums_attempted_);
   if (only_load_trusted_executable_ &&
-      !LocationIsTrusted(file.GetLocation()) &&
+      !LocationIsTrusted(file.GetLocation(), !Runtime::Current()->DenyArtApexDataFiles()) &&
       file.ContainsDexCode() &&
       zip_file_only_contains_uncompressed_dex_) {
     LOG(ERROR) << "Not loading "
@@ -565,7 +565,7 @@
   // Check if `location` could have an oat file in the ART APEX data directory. If so, and the
   // file exists, use it.
   const std::string apex_data_file = GetApexDataOdexFilename(location, isa);
-  if (!apex_data_file.empty()) {
+  if (!apex_data_file.empty() && !Runtime::Current()->DenyArtApexDataFiles()) {
     if (OS::FileExists(apex_data_file.c_str(), /*check_file_type=*/true)) {
       *oat_filename = apex_data_file;
       return true;
@@ -646,14 +646,23 @@
 
   Runtime* runtime = Runtime::Current();
   std::string error_msg;
-  bool result = gc::space::ImageSpace::VerifyBootClassPathChecksums(
-      oat_boot_class_path_checksums_view,
-      oat_boot_class_path_view,
-      runtime->GetImageLocation(),
-      ArrayRef<const std::string>(runtime->GetBootClassPathLocations()),
-      ArrayRef<const std::string>(runtime->GetBootClassPath()),
-      isa_,
-      &error_msg);
+  bool result = false;
+  // Fast path when the runtime boot classpath cheksums and boot classpath
+  // locations directly match.
+  if (oat_boot_class_path_checksums_view == runtime->GetBootClassPathChecksums() &&
+      isa_ == kRuntimeISA &&
+      oat_boot_class_path_view == android::base::Join(runtime->GetBootClassPathLocations(), ":")) {
+    result = true;
+  } else {
+    result = gc::space::ImageSpace::VerifyBootClassPathChecksums(
+        oat_boot_class_path_checksums_view,
+        oat_boot_class_path_view,
+        runtime->GetImageLocation(),
+        ArrayRef<const std::string>(runtime->GetBootClassPathLocations()),
+        ArrayRef<const std::string>(runtime->GetBootClassPath()),
+        isa_,
+        &error_msg);
+  }
   if (!result) {
     VLOG(oat) << "Failed to verify checksums of oat file " << oat_file.GetLocation()
         << " error: " << error_msg;
@@ -808,6 +817,12 @@
     return nullptr;
   }
 
+  if (LocationIsOnArtApexData(filename_) && Runtime::Current()->DenyArtApexDataFiles()) {
+    LOG(WARNING) << "OatFileAssistant rejected file " << filename_
+                 << ": ART apexdata is untrusted.";
+    return nullptr;
+  }
+
   std::string error_msg;
   bool executable = oat_file_assistant_->load_executable_;
   if (android::base::EndsWith(filename_, kVdexExtension)) {
@@ -847,7 +862,7 @@
     }
   } else {
     if (executable && oat_file_assistant_->only_load_trusted_executable_) {
-      executable = LocationIsTrusted(filename_);
+      executable = LocationIsTrusted(filename_, /*trust_art_apex_data_files=*/ true);
     }
     VLOG(oat) << "Loading " << filename_ << " with executable: " << executable;
     if (use_fd_) {
diff --git a/runtime/oat_file_assistant_test.cc b/runtime/oat_file_assistant_test.cc
index 3760885..68ae83d 100644
--- a/runtime/oat_file_assistant_test.cc
+++ b/runtime/oat_file_assistant_test.cc
@@ -615,7 +615,7 @@
       &oat_file_assistant,
       dex_location,
       "verify",
-      "unknown",
+      "vdex",
       "up-to-date");
 }
 
@@ -889,7 +889,7 @@
       &oat_file_assistant,
       dex_location,
       "verify",
-      "unknown",
+      "vdex",
       "up-to-date");
 }
 
diff --git a/runtime/oat_file_manager.cc b/runtime/oat_file_manager.cc
index 391d597..542ea09 100644
--- a/runtime/oat_file_manager.cc
+++ b/runtime/oat_file_manager.cc
@@ -72,7 +72,7 @@
 
   WriterMutexLock mu(Thread::Current(), *Locks::oat_file_manager_lock_);
   CHECK(!only_use_system_oat_files_ ||
-        LocationIsTrusted(oat_file->GetLocation()) ||
+        LocationIsTrusted(oat_file->GetLocation(), !Runtime::Current()->DenyArtApexDataFiles()) ||
         !oat_file->IsExecutable())
       << "Registering a non /system oat file: " << oat_file->GetLocation();
   DCHECK(oat_file != nullptr);
@@ -141,26 +141,6 @@
   return oat_files;
 }
 
-bool OatFileManager::GetPrimaryOatFileInfo(std::string* compilation_reason,
-                                           CompilerFilter::Filter* compiler_filter) const {
-  ReaderMutexLock mu(Thread::Current(), *Locks::oat_file_manager_lock_);
-  std::vector<const OatFile*> boot_oat_files = GetBootOatFiles();
-  if (!boot_oat_files.empty()) {
-    for (const std::unique_ptr<const OatFile>& oat_file : oat_files_) {
-      if (std::find(boot_oat_files.begin(), boot_oat_files.end(), oat_file.get()) ==
-          boot_oat_files.end()) {
-        const char* reason = oat_file->GetCompilationReason();
-        if (reason != nullptr) {
-          *compilation_reason = reason;
-        }
-        *compiler_filter = oat_file->GetCompilerFilter();
-        return true;
-      }
-    }
-  }
-  return false;
-}
-
 OatFileManager::OatFileManager()
     : only_use_system_oat_files_(false) {}
 
@@ -231,6 +211,12 @@
         &compilation_reason,
         &odex_status);
 
+    Runtime::Current()->GetAppInfo()->RegisterOdexStatus(
+        dex_location,
+        compilation_filter,
+        compilation_reason,
+        odex_status);
+
     ScopedTrace odex_loading(StringPrintf(
         "location=%s status=%s filter=%s reason=%s",
         odex_location.c_str(),
@@ -420,6 +406,10 @@
     Runtime::Current()->GetJit()->RegisterDexFiles(dex_files, class_loader);
   }
 
+  // Now that we loaded the dex/odex files, notify the runtime.
+  // Note that we do this everytime we load dex files.
+  Runtime::Current()->NotifyDexFileLoaded();
+
   return dex_files;
 }
 
@@ -766,6 +756,11 @@
     return;
   }
 
+  if (LocationIsOnArtApexData(odex_filename) && Runtime::Current()->DenyArtApexDataFiles()) {
+    // Ignore vdex file associated with this odex file as the odex file is not trustworthy.
+    return;
+  }
+
   {
     WriterMutexLock mu(self, *Locks::oat_file_manager_lock_);
     if (verification_thread_pool_ == nullptr) {
@@ -810,7 +805,11 @@
 
   for (const std::unique_ptr<const OatFile>& oat_file : oat_files_) {
     if (boot_set.find(oat_file.get()) == boot_set.end()) {
-      if (!LocationIsTrusted(oat_file->GetLocation())) {
+      // This method is called during runtime initialization before we can call
+      // Runtime::Current()->DenyArtApexDataFiles(). Since we don't want to fail hard if
+      // the ART APEX data files are untrusted, just treat them as trusted for the check here.
+      const bool trust_art_apex_data_files = true;
+      if (!LocationIsTrusted(oat_file->GetLocation(), trust_art_apex_data_files)) {
         // When the file is not in a trusted location, we check whether the oat file has any
         // AOT or DEX code. It is a fatal error if it has.
         if (CompilerFilter::IsAotCompilationEnabled(oat_file->GetCompilerFilter()) ||
diff --git a/runtime/oat_file_manager.h b/runtime/oat_file_manager.h
index f8a7341..abf4ea0 100644
--- a/runtime/oat_file_manager.h
+++ b/runtime/oat_file_manager.h
@@ -71,11 +71,6 @@
   // Returns the boot image oat files.
   std::vector<const OatFile*> GetBootOatFiles() const;
 
-  // Fetches information from the primary oat file.
-  bool GetPrimaryOatFileInfo(std::string* compilation_reason,
-                             CompilerFilter::Filter* compiler_filter)
-      const REQUIRES(!Locks::oat_file_manager_lock_);
-
   // Returns the oat files for the images, registers the oat files.
   // Takes ownership of the imagespace's underlying oat files.
   std::vector<const OatFile*> RegisterImageOatFiles(
diff --git a/runtime/parsed_options.cc b/runtime/parsed_options.cc
index c85c951..3e1fd4f 100644
--- a/runtime/parsed_options.cc
+++ b/runtime/parsed_options.cc
@@ -414,6 +414,8 @@
           .IntoKey(M::UseStderrLogger)
       .Define("-Xonly-use-system-oat-files")
           .IntoKey(M::OnlyUseTrustedOatFiles)
+      .Define("-Xdeny-art-apex-data-files")
+          .IntoKey(M::DenyArtApexDataFiles)
       .Define("-Xverifier-logging-threshold=_")
           .WithType<unsigned int>()
           .IntoKey(M::VerifierLoggingThreshold)
@@ -439,6 +441,10 @@
           .WithType<bool>()
           .WithValueMap({{"false", false}, {"true", true}})
           .IntoKey(M::VerifierMissingKThrowFatal)
+      .Define("-XX:ForceJavaZygoteForkLoop=_")
+          .WithType<bool>()
+          .WithValueMap({{"false", false}, {"true", true}})
+          .IntoKey(M::ForceJavaZygoteForkLoop)
       .Define("-XX:PerfettoHprof=_")
           .WithType<bool>()
           .WithValueMap({{"false", false}, {"true", true}})
@@ -719,7 +725,9 @@
   }
 
   if (!args.Exists(M::CompilerCallbacksPtr) && !args.Exists(M::Image)) {
-    std::string image = GetDefaultBootImageLocation(GetAndroidRoot());
+    const bool deny_art_apex_data_files = args.Exists(M::DenyArtApexDataFiles);
+    std::string image =
+        GetDefaultBootImageLocation(GetAndroidRoot(), deny_art_apex_data_files);
     args.Set(M::Image, image);
   }
 
diff --git a/runtime/runtime.cc b/runtime/runtime.cc
index ff504e3..6c99c1f 100644
--- a/runtime/runtime.cc
+++ b/runtime/runtime.cc
@@ -34,6 +34,7 @@
 #include <cstdio>
 #include <cstdlib>
 #include <limits>
+#include <string.h>
 #include <thread>
 #include <unordered_set>
 #include <vector>
@@ -409,7 +410,7 @@
     while (threads_being_born_ > 0) {
       shutdown_cond_->Wait(self);
     }
-    shutting_down_ = true;
+    SetShuttingDown();
   }
   // Shutdown and wait for the daemons.
   CHECK(self != nullptr);
@@ -640,7 +641,7 @@
   // May be coming from an unattached thread.
   if (Thread::Current() == nullptr) {
     Runtime* current = Runtime::Current();
-    if (current != nullptr && current->IsStarted() && !current->IsShuttingDown(nullptr)) {
+    if (current != nullptr && current->IsStarted() && !current->IsShuttingDownUnsafe()) {
       // We do not flag this to the unexpected-signal handler so that that may dump the stack.
       abort();
       UNREACHABLE();
@@ -1004,12 +1005,19 @@
       !jit_options_->GetProfileSaverOptions().GetProfilePath().empty()) {
     std::vector<std::string> dex_filenames;
     Split(class_path_string_, ':', &dex_filenames);
-    // It's ok to pass "" to the ref profile filename. It indicates we don't have
+
+    // We pass "" as the package name because at this point we don't know it. It could be the
+    // Zygote or it could be a dalvikvm cmd line execution. The package name will be re-set during
+    // post-fork or during RegisterAppInfo.
+    //
+    // Also, it's ok to pass "" to the ref profile filename. It indicates we don't have
     // a reference profile.
     RegisterAppInfo(
+        /*package_name=*/ "",
         dex_filenames,
         jit_options_->GetProfileSaverOptions().GetProfilePath(),
-        /*ref_profile_filename=*/ "");
+        /*ref_profile_filename=*/ "",
+        kVMRuntimePrimaryApk);
   }
 
   return true;
@@ -1056,6 +1064,22 @@
   DCHECK(!IsZygote());
 
   if (is_system_server) {
+    // Register the system server code paths.
+    // TODO: Ideally this should be done by the VMRuntime#RegisterAppInfo. However, right now
+    // the method is only called when we set up the profile. It should be called all the time
+    // (simillar to the apps). Once that's done this manual registration can be removed.
+    const char* system_server_classpath = getenv("SYSTEMSERVERCLASSPATH");
+    if (system_server_classpath == nullptr || (strlen(system_server_classpath) == 0)) {
+      LOG(WARNING) << "System server class path not set";
+    } else {
+      std::vector<std::string> jars = android::base::Split(system_server_classpath, ":");
+      app_info_.RegisterAppInfo("android",
+                                jars,
+                                /*cur_profile_path=*/ "",
+                                /*ref_profile_path=*/ "",
+                                AppInfo::CodeType::kPrimaryApk);
+    }
+
     // Set the system server package name to "android".
     // This is used to tell the difference between samples provided by system server
     // and samples generated by other apps when processing boot image profiles.
@@ -1088,18 +1112,21 @@
   GetMetrics()->Reset();
 
   if (metrics_reporter_ != nullptr) {
-    if (IsSystemServer() && !metrics_reporter_->IsPeriodicReportingEnabled()) {
-      // For system server, we don't get startup metrics, so make sure we have periodic reporting
-      // enabled.
-      //
-      // Note that this does not override the command line argument if one is given.
-      metrics_reporter_->SetReportingPeriod(kOneHourInSeconds);
-    }
+    // Now that we know if we are an app or system server, reload the metrics reporter config
+    // in case there are any difference.
+    metrics::ReportingConfig metrics_config =
+        metrics::ReportingConfig::FromFlags(is_system_server);
+
+    metrics_reporter_->ReloadConfig(metrics_config);
 
     metrics::SessionData session_data{metrics::SessionData::CreateDefault()};
-    session_data.session_id = GetRandomNumber<int64_t>(0, std::numeric_limits<int64_t>::max());
+    // Start the session id from 1 to avoid clashes with the default value.
+    // (better for debugability)
+    session_data.session_id = GetRandomNumber<int64_t>(1, std::numeric_limits<int64_t>::max());
     // TODO: set session_data.compilation_reason and session_data.compiler_filter
     metrics_reporter_->MaybeStartBackgroundThread(session_data);
+    // Also notify about any updates to the app info.
+    metrics_reporter_->NotifyAppInfoUpdated(&app_info_);
   }
 
   StartSignalCatcher();
@@ -1282,7 +1309,13 @@
       if (info == apex_infos.end() || info->second->getIsFactory()) {
         result += '/';
       } else {
-        android::base::StringAppendF(&result, "/%" PRIu64, info->second->getVersionCode());
+        // In case lastUpdateMillis field is populated in apex-info-list.xml, we
+        // prefer to use it as version scheme. If the field is missing we
+        // fallback to the version code of the APEX.
+        uint64_t version = info->second->hasLastUpdateMillis()
+            ? info->second->getLastUpdateMillis()
+            : info->second->getVersionCode();
+        android::base::StringAppendF(&result, "/%" PRIu64, version);
       }
     }
 #endif
@@ -1307,6 +1340,12 @@
   // Reload all the flags value (from system properties and device configs).
   ReloadAllFlags(__FUNCTION__);
 
+  deny_art_apex_data_files_ = runtime_options.Exists(Opt::DenyArtApexDataFiles);
+  if (deny_art_apex_data_files_) {
+    // We will run slower without those files if the system has taken an ART APEX update.
+    LOG(WARNING) << "ART APEX data files are untrusted.";
+  }
+
   // Early override for logging output.
   if (runtime_options.Exists(Opt::UseStderrLogger)) {
     android::base::SetLogger(android::base::StderrLogger);
@@ -1315,6 +1354,7 @@
   MemMap::Init();
 
   verifier_missing_kthrow_fatal_ = runtime_options.GetOrDefault(Opt::VerifierMissingKThrowFatal);
+  force_java_zygote_fork_loop_ = runtime_options.GetOrDefault(Opt::ForceJavaZygoteForkLoop);
   perfetto_hprof_enabled_ = runtime_options.GetOrDefault(Opt::PerfettoHprof);
   perfetto_javaheapprof_enabled_ = runtime_options.GetOrDefault(Opt::PerfettoJavaHeapStackProf);
 
@@ -1370,7 +1410,21 @@
     }
     std::string system_oat_filename = ImageHeader::GetOatLocationFromImageLocation(
         GetSystemImageFilename(image_location_.c_str(), instruction_set_));
-    std::string system_oat_location = ImageHeader::GetOatLocationFromImageLocation(image_location_);
+    std::string system_oat_location = ImageHeader::GetOatLocationFromImageLocation(
+        image_location_);
+
+    if (deny_art_apex_data_files_ && (LocationIsOnArtApexData(system_oat_filename) ||
+                                      LocationIsOnArtApexData(system_oat_location))) {
+      // This code path exists for completeness, but we don't expect it to be hit.
+      //
+      // `deny_art_apex_data_files` defaults to false unless set at the command-line. The image
+      // locations come from the -Ximage argument and it would need to be specified as being on
+      // the ART APEX data directory. This combination of flags would say apexdata is compromised,
+      // use apexdata to load image files, which is obviously not a good idea.
+      LOG(ERROR) << "Could not open boot oat file from untrusted location: " << system_oat_filename;
+      return false;
+    }
+
     std::string error_msg;
     std::unique_ptr<OatFile> oat_file(OatFile::Open(/*zip_fd=*/ -1,
                                                     system_oat_filename,
@@ -1760,6 +1814,14 @@
     }
   }
 
+  // Now that the boot image space is set, cache the boot classpath checksums,
+  // to be used when validating oat files.
+  ArrayRef<gc::space::ImageSpace* const> image_spaces(GetHeap()->GetBootImageSpaces());
+  ArrayRef<const DexFile* const> bcp_dex_files(GetClassLinker()->GetBootClassPath());
+  boot_class_path_checksums_ = gc::space::ImageSpace::GetBootClassPathChecksums(image_spaces,
+                                                                                bcp_dex_files);
+
+  // Cache the apex versions.
   InitializeApexVersions();
 
   CHECK(class_linker_ != nullptr);
@@ -1939,7 +2001,7 @@
 }
 
 void Runtime::InitMetrics() {
-  auto metrics_config = metrics::ReportingConfig::FromFlags();
+  metrics::ReportingConfig metrics_config = metrics::ReportingConfig::FromFlags();
   metrics_reporter_ = metrics::MetricsReporter::Create(metrics_config, this);
 }
 
@@ -2036,6 +2098,10 @@
   // a regular JNI libraries with a regular JNI_OnLoad. Most JNI libraries can
   // just use System.loadLibrary, but libcore can't because it's the library
   // that implements System.loadLibrary!
+  //
+  // By setting calling class to java.lang.Object, the caller location for these
+  // JNI libs is core-oj.jar in the ART APEX, and hence they are loaded from the
+  // com_android_art linker namespace.
 
   // libicu_jni has to be initialized before libopenjdk{d} due to runtime dependency from
   // libopenjdk{d} to Icu4cMetadata native methods in libicu_jni. See http://b/143888405
@@ -2552,9 +2618,22 @@
   }
 }
 
-void Runtime::RegisterAppInfo(const std::vector<std::string>& code_paths,
+void Runtime::RegisterAppInfo(const std::string& package_name,
+                              const std::vector<std::string>& code_paths,
                               const std::string& profile_output_filename,
-                              const std::string& ref_profile_filename) {
+                              const std::string& ref_profile_filename,
+                              int32_t code_type) {
+  app_info_.RegisterAppInfo(
+      package_name,
+      code_paths,
+      profile_output_filename,
+      ref_profile_filename,
+      AppInfo::FromVMRuntimeConstants(code_type));
+
+  if (metrics_reporter_ != nullptr) {
+    metrics_reporter_->NotifyAppInfoUpdated(&app_info_);
+  }
+
   if (jit_.get() == nullptr) {
     // We are not JITing. Nothing to do.
     return;
@@ -3126,6 +3205,8 @@
     return;
   }
 
+  VLOG(startup) << app_info_;
+
   VLOG(startup) << "Adding NotifyStartupCompleted task";
   // Use the heap task processor since we want to be exclusive with the GC and we don't want to
   // block the caller if the GC is running.
@@ -3137,18 +3218,16 @@
   ProfileSaver::NotifyStartupCompleted();
 
   if (metrics_reporter_ != nullptr) {
-    std::string compilation_reason;
-    CompilerFilter::Filter compiler_filter;
-    if (oat_file_manager_->GetPrimaryOatFileInfo(&compilation_reason, &compiler_filter)) {
-      metrics_reporter_->SetCompilationInfo(
-          compilation_reason.empty() ? metrics::CompilationReasonFromName(compilation_reason)
-                                     : metrics::CompilationReason::kUnknown,
-          compiler_filter);
-    }
     metrics_reporter_->NotifyStartupCompleted();
   }
 }
 
+void Runtime::NotifyDexFileLoaded() {
+  if (metrics_reporter_ != nullptr) {
+    metrics_reporter_->NotifyAppInfoUpdated(&app_info_);
+  }
+}
+
 bool Runtime::GetStartupCompleted() const {
   return startup_completed_.load(std::memory_order_seq_cst);
 }
diff --git a/runtime/runtime.h b/runtime/runtime.h
index 5bea321..b2093a3 100644
--- a/runtime/runtime.h
+++ b/runtime/runtime.h
@@ -27,6 +27,7 @@
 #include <utility>
 #include <vector>
 
+#include "app_info.h"
 #include "base/locks.h"
 #include "base/macros.h"
 #include "base/mem_map.h"
@@ -221,7 +222,13 @@
 
   bool IsShuttingDown(Thread* self);
   bool IsShuttingDownLocked() const REQUIRES(Locks::runtime_shutdown_lock_) {
-    return shutting_down_;
+    return shutting_down_.load(std::memory_order_relaxed);
+  }
+  bool IsShuttingDownUnsafe() const {
+    return shutting_down_.load(std::memory_order_relaxed);
+  }
+  void SetShuttingDown() REQUIRES(Locks::runtime_shutdown_lock_) {
+    shutting_down_.store(true, std::memory_order_relaxed);
   }
 
   size_t NumberOfThreadsBeingBorn() const REQUIRES(Locks::runtime_shutdown_lock_) {
@@ -286,6 +293,12 @@
     return boot_class_path_locations_.empty() ? boot_class_path_ : boot_class_path_locations_;
   }
 
+  // Returns the checksums for the boot image, extensions and extra boot class path dex files,
+  // based on the image spaces and boot class path dex files loaded in memory.
+  const std::string& GetBootClassPathChecksums() const {
+    return boot_class_path_checksums_;
+  }
+
   const std::string& GetClassPathString() const {
     return class_path_string_;
   }
@@ -524,9 +537,11 @@
     return &instrumentation_;
   }
 
-  void RegisterAppInfo(const std::vector<std::string>& code_paths,
+  void RegisterAppInfo(const std::string& package_name,
+                       const std::vector<std::string>& code_paths,
                        const std::string& profile_output_filename,
-                       const std::string& ref_profile_filename);
+                       const std::string& ref_profile_filename,
+                       int32_t code_type);
 
   // Transaction support.
   bool IsActiveTransaction() const;
@@ -887,6 +902,10 @@
     return result;
   }
 
+  bool DenyArtApexDataFiles() const {
+    return deny_art_apex_data_files_;
+  }
+
   // Whether or not we use MADV_RANDOM on files that are thought to have random access patterns.
   // This is beneficial for low RAM devices since it reduces page cache thrashing.
   bool MAdviseRandomAccess() const {
@@ -967,6 +986,10 @@
   // first call.
   void NotifyStartupCompleted();
 
+  // Notify the runtime that the application finished loading some dex/odex files. This is
+  // called everytime we load a set of dex files in a class loader.
+  void NotifyDexFileLoaded();
+
   // Return true if startup is already completed.
   bool GetStartupCompleted() const;
 
@@ -974,6 +997,10 @@
     return verifier_missing_kthrow_fatal_;
   }
 
+  bool IsJavaZygoteForkLoopRequired() const {
+    return force_java_zygote_fork_loop_;
+  }
+
   bool IsPerfettoHprofEnabled() const {
     return perfetto_hprof_enabled_;
   }
@@ -994,6 +1021,8 @@
 
   metrics::ArtMetrics* GetMetrics() { return &metrics_; }
 
+  AppInfo* GetAppInfo() { return &app_info_; }
+
   void RequestMetricsReport(bool synchronous = true);
 
   static void MadviseFileForRange(size_t madvise_size_limit_bytes,
@@ -1105,6 +1134,7 @@
 
   std::vector<std::string> boot_class_path_;
   std::vector<std::string> boot_class_path_locations_;
+  std::string boot_class_path_checksums_;
   std::string class_path_string_;
   std::vector<std::string> properties_;
 
@@ -1166,8 +1196,10 @@
   // Waited upon until no threads are being born.
   std::unique_ptr<ConditionVariable> shutdown_cond_ GUARDED_BY(Locks::runtime_shutdown_lock_);
 
-  // Set when runtime shutdown is past the point that new threads may attach.
-  bool shutting_down_ GUARDED_BY(Locks::runtime_shutdown_lock_);
+  // Set when runtime shutdown is past the point that new threads may attach.  Usually
+  // GUARDED_BY(Locks::runtime_shutdown_lock_). But we need to check it in Abort without the
+  // lock, because we may already own it.
+  std::atomic<bool> shutting_down_;
 
   // The runtime is starting to shutdown but is blocked waiting on shutdown_cond_.
   bool shutting_down_started_ GUARDED_BY(Locks::runtime_shutdown_lock_);
@@ -1358,6 +1390,9 @@
   // indirection is changed. This is intended only for testing JNI id swapping.
   bool automatically_set_jni_ids_indirection_;
 
+  // True if files in /data/misc/apexdata/com.android.art are considered untrustworthy.
+  bool deny_art_apex_data_files_;
+
   // Saved environment.
   class EnvSnapshot {
    public:
@@ -1390,6 +1425,7 @@
   std::atomic<bool> startup_completed_ = false;
 
   bool verifier_missing_kthrow_fatal_;
+  bool force_java_zygote_fork_loop_;
   bool perfetto_hprof_enabled_;
   bool perfetto_javaheapprof_enabled_;
 
@@ -1404,6 +1440,9 @@
   // the third entry in the example above).
   std::string apex_versions_;
 
+  // The info about the application code paths.
+  AppInfo app_info_;
+
   // Note: See comments on GetFaultMessage.
   friend std::string GetFaultMessageForAbortLogging();
   friend class Dex2oatImageTest;
diff --git a/runtime/runtime_options.def b/runtime/runtime_options.def
index b73f5c1..ddbbfec 100644
--- a/runtime/runtime_options.def
+++ b/runtime/runtime_options.def
@@ -170,11 +170,16 @@
 RUNTIME_OPTIONS_KEY (Unit,                UseStderrLogger)
 
 RUNTIME_OPTIONS_KEY (Unit,                OnlyUseTrustedOatFiles)
+RUNTIME_OPTIONS_KEY (Unit,                DenyArtApexDataFiles)
 RUNTIME_OPTIONS_KEY (unsigned int,        VerifierLoggingThreshold,       100)
 
 RUNTIME_OPTIONS_KEY (bool,                FastClassNotFoundException,     true)
 RUNTIME_OPTIONS_KEY (bool,                VerifierMissingKThrowFatal,     true)
 
+// Setting this to true causes ART to disable Zygote native fork loop. ART also
+// internally enables this if ZygoteJit is enabled.
+RUNTIME_OPTIONS_KEY (bool,                ForceJavaZygoteForkLoop,        false)
+
 // Whether to allow loading of the perfetto hprof plugin.
 // Even with this option set, we will still only actually load the plugin
 // if we are on a userdebug build or the app is debuggable or profileable.
diff --git a/runtime/thread.cc b/runtime/thread.cc
index 46aa2b5..16a5f93 100644
--- a/runtime/thread.cc
+++ b/runtime/thread.cc
@@ -4468,6 +4468,12 @@
       WellKnownClasses::java_lang_Thread_systemDaemon)->GetBoolean(GetPeer());
 }
 
+std::string Thread::StateAndFlagsAsHexString() const {
+  std::stringstream result_stream;
+  result_stream << std::hex << tls32_.state_and_flags.as_atomic_int.load();
+  return result_stream.str();
+}
+
 ScopedExceptionStorage::ScopedExceptionStorage(art::Thread* self)
     : self_(self), hs_(self_), excp_(hs_.NewHandle<art::mirror::Throwable>(self_->GetException())) {
   self_->ClearException();
diff --git a/runtime/thread.h b/runtime/thread.h
index 7a40802..676bfd8 100644
--- a/runtime/thread.h
+++ b/runtime/thread.h
@@ -254,7 +254,7 @@
 
   bool IsSuspended() const {
     union StateAndFlags state_and_flags;
-    state_and_flags.as_int = tls32_.state_and_flags.as_int;
+    state_and_flags.as_int = tls32_.state_and_flags.as_atomic_int.load(std::memory_order_relaxed);
     return state_and_flags.as_struct.state != kRunnable &&
         (state_and_flags.as_struct.flags & kSuspendRequest) != 0;
   }
@@ -1517,6 +1517,9 @@
   };
   static_assert(sizeof(StateAndFlags) == sizeof(int32_t), "Weird state_and_flags size");
 
+  // Format state and flags as a hex string. For diagnostic output.
+  std::string StateAndFlagsAsHexString() const;
+
   static void ThreadExitCallback(void* arg);
 
   // Maximum number of suspend barriers.
diff --git a/runtime/thread_list.cc b/runtime/thread_list.cc
index f8e99e8..84b7384 100644
--- a/runtime/thread_list.cc
+++ b/runtime/thread_list.cc
@@ -874,10 +874,11 @@
 }
 
 Thread* ThreadList::SuspendThreadByPeer(jobject peer,
-                                        bool request_suspension,
                                         SuspendReason reason,
                                         bool* timed_out) {
+  bool request_suspension = true;
   const uint64_t start_time = NanoTime();
+  int self_suspend_count = 0;
   useconds_t sleep_us = kThreadSuspendInitialSleepUs;
   *timed_out = false;
   Thread* const self = Thread::Current();
@@ -926,6 +927,7 @@
             // We hold the suspend count lock but another thread is trying to suspend us. Its not
             // safe to try to suspend another thread in case we get a cycle. Start the loop again
             // which will allow this thread to be suspended.
+            ++self_suspend_count;
             continue;
           }
           CHECK(suspended_thread == nullptr);
@@ -957,20 +959,22 @@
         }
         const uint64_t total_delay = NanoTime() - start_time;
         if (total_delay >= thread_suspend_timeout_ns_) {
-          ThreadSuspendByPeerWarning(self,
-                                     ::android::base::FATAL,
-                                     "Thread suspension timed out",
-                                     peer);
-          if (suspended_thread != nullptr) {
+          if (suspended_thread == nullptr) {
+            ThreadSuspendByPeerWarning(self,
+                                       ::android::base::FATAL,
+                                       "Failed to issue suspend request",
+                                       peer);
+          } else {
             CHECK_EQ(suspended_thread, thread);
-            bool updated = suspended_thread->ModifySuspendCount(soa.Self(),
-                                                                -1,
-                                                                nullptr,
-                                                                reason);
-            DCHECK(updated);
+            LOG(WARNING) << "Suspended thread state_and_flags: "
+                         << suspended_thread->StateAndFlagsAsHexString()
+                         << ", self_suspend_count = " << self_suspend_count;
+            ThreadSuspendByPeerWarning(self,
+                                       ::android::base::FATAL,
+                                       "Thread suspension timed out",
+                                       peer);
           }
-          *timed_out = true;
-          return nullptr;
+          UNREACHABLE();
         } else if (sleep_us == 0 &&
             total_delay > static_cast<uint64_t>(kThreadSuspendMaxYieldUs) * 1000) {
           // We have spun for kThreadSuspendMaxYieldUs time, switch to sleeps to prevent
diff --git a/runtime/thread_list.h b/runtime/thread_list.h
index 87a4c8d..f5b58a0 100644
--- a/runtime/thread_list.h
+++ b/runtime/thread_list.h
@@ -81,11 +81,8 @@
 
   // Suspend a thread using a peer, typically used by the debugger. Returns the thread on success,
   // else null. The peer is used to identify the thread to avoid races with the thread terminating.
-  // If the thread should be suspended then value of request_suspension should be true otherwise
-  // the routine will wait for a previous suspend request. If the suspension times out then *timeout
-  // is set to true.
+  // If the suspension times out then *timeout is set to true.
   Thread* SuspendThreadByPeer(jobject peer,
-                              bool request_suspension,
                               SuspendReason reason,
                               bool* timed_out)
       REQUIRES(!Locks::mutator_lock_,
diff --git a/runtime/vdex_file.cc b/runtime/vdex_file.cc
index 29efd40..9671679 100644
--- a/runtime/vdex_file.cc
+++ b/runtime/vdex_file.cc
@@ -192,7 +192,8 @@
   } else {
     const uint8_t* data = cursor + sizeof(uint32_t) + reinterpret_cast<const uint32_t*>(cursor)[0];
     // TypeLookupTables are required to be 4 byte aligned. the OatWriter makes sure they are.
-    CHECK_ALIGNED(data, 4);
+    // We don't check this here to be defensive against corrupted vdex files.
+    // Callers should check the returned value matches their expectations.
     return data;
   }
 }
diff --git a/runtime/vdex_file.h b/runtime/vdex_file.h
index eb8b817..a66ff88 100644
--- a/runtime/vdex_file.h
+++ b/runtime/vdex_file.h
@@ -157,8 +157,6 @@
     return size;
   }
 
-  bool IsDexSectionValid() const;
-
   bool HasDexSection() const {
     return GetSectionHeader(VdexSection::kDexFileSection).section_size != 0u;
   }
@@ -251,6 +249,9 @@
   const uint8_t* Begin() const { return mmap_.Begin(); }
   const uint8_t* End() const { return mmap_.End(); }
   size_t Size() const { return mmap_.Size(); }
+  bool Contains(const uint8_t* pointer) const {
+    return pointer >= Begin() && pointer < End();
+  }
 
   const VdexFileHeader& GetVdexFileHeader() const {
     return *reinterpret_cast<const VdexFileHeader*>(Begin());
diff --git a/sigchainlib/Android.bp b/sigchainlib/Android.bp
index b3dd7e2..f8c8379 100644
--- a/sigchainlib/Android.bp
+++ b/sigchainlib/Android.bp
@@ -81,11 +81,27 @@
     export_include_dirs: ["."],
 }
 
+art_cc_defaults {
+    name: "art_sigchain_tests_defaults",
+    srcs: ["sigchain_test.cc"],
+    shared_libs: ["libsigchain"],
+}
+
+// Version of ART gtest `art_sigchain_tests` bundled with the ART APEX on target.
+// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
 art_cc_test {
     name: "art_sigchain_tests",
     defaults: [
         "art_gtest_defaults",
+        "art_sigchain_tests_defaults",
     ],
-    srcs: ["sigchain_test.cc"],
-    shared_libs: ["libsigchain"],
+}
+
+// Standalone version of ART gtest `art_sigchain_tests`, not bundled with the ART APEX on target.
+art_cc_test {
+    name: "art_standalone_sigchain_tests",
+    defaults: [
+        "art_standalone_gtest_defaults",
+        "art_sigchain_tests_defaults",
+    ],
 }
diff --git a/sigchainlib/sigchain.cc b/sigchainlib/sigchain.cc
index 1935d45..8aa4760 100644
--- a/sigchainlib/sigchain.cc
+++ b/sigchainlib/sigchain.cc
@@ -405,7 +405,7 @@
     if (handler == SIG_IGN) {
       return;
     } else if (handler == SIG_DFL) {
-      fatal("exiting due to SIG_DFL handler for signal %d", signo);
+      fatal("exiting due to SIG_DFL handler for signal %d, ucontext %p", signo, ucontext);
     } else {
       handler(signo);
     }
diff --git a/test/2011-stack-walk-concurrent-instrument/stack_walk_concurrent.cc b/test/2011-stack-walk-concurrent-instrument/stack_walk_concurrent.cc
index a185446..a10fe2e 100644
--- a/test/2011-stack-walk-concurrent-instrument/stack_walk_concurrent.cc
+++ b/test/2011-stack-walk-concurrent-instrument/stack_walk_concurrent.cc
@@ -81,7 +81,7 @@
   }
   bool timed_out = false;
   Thread* other = Runtime::Current()->GetThreadList()->SuspendThreadByPeer(
-      target, true, SuspendReason::kInternal, &timed_out);
+      target, SuspendReason::kInternal, &timed_out);
   CHECK(!timed_out);
   CHECK(other != nullptr);
   ScopedSuspendAll ssa(__FUNCTION__);
diff --git a/test/2232-write-metrics-to-log/run b/test/2232-write-metrics-to-log/run
index 07c1e60..d34ec6c 100755
--- a/test/2232-write-metrics-to-log/run
+++ b/test/2232-write-metrics-to-log/run
@@ -15,4 +15,4 @@
 # limitations under the License.
 
 export ANDROID_LOG_TAGS="*:i"
-exec ${RUN} $@ --external-log-tags --runtime-option -Xmetrics-write-to-logcat:true
+exec ${RUN} $@ --external-log-tags --runtime-option -Xmetrics-write-to-logcat:true --runtime-option -Xmetrics-reporting-mods:100
diff --git a/test/530-checker-lse/src/Main.java b/test/530-checker-lse/src/Main.java
index 35f1dc2..a707a8a 100644
--- a/test/530-checker-lse/src/Main.java
+++ b/test/530-checker-lse/src/Main.java
@@ -3964,249 +3964,6 @@
     return res;
   }
 
-  /// CHECK-START: int Main.$noinline$testPartialEscape2(TestClass, boolean) load_store_elimination (before)
-  /// CHECK-DAG:     ParameterValue
-  /// CHECK-DAG:     NewInstance
-  /// CHECK-DAG:     InvokeStaticOrDirect
-  /// CHECK-DAG:     InvokeStaticOrDirect
-  /// CHECK-DAG:     InvokeStaticOrDirect
-  /// CHECK-DAG:     InstanceFieldSet
-  /// CHECK-DAG:     InstanceFieldSet
-  /// CHECK-DAG:     InstanceFieldSet
-  /// CHECK-DAG:     InstanceFieldGet
-  /// CHECK-DAG:     InstanceFieldGet
-  //
-  /// CHECK-START: int Main.$noinline$testPartialEscape2(TestClass, boolean) load_store_elimination (after)
-  /// CHECK-DAG:     ParameterValue
-  /// CHECK-DAG:     NewInstance
-  /// CHECK-DAG:     Phi
-  //
-  /// CHECK-START: int Main.$noinline$testPartialEscape2(TestClass, boolean) load_store_elimination (after)
-  /// CHECK:         InvokeStaticOrDirect
-  /// CHECK:         InvokeStaticOrDirect
-  /// CHECK:         InvokeStaticOrDirect
-  //
-  /// CHECK-NOT:     InvokeStaticOrDirect
-
-  /// CHECK-START: int Main.$noinline$testPartialEscape2(TestClass, boolean) load_store_elimination (after)
-  /// CHECK:         InstanceFieldSet predicated:false
-  /// CHECK-NOT:     InstanceFieldSet predicated:false
-  //
-  /// CHECK-START: int Main.$noinline$testPartialEscape2(TestClass, boolean) load_store_elimination (after)
-  /// CHECK:         InstanceFieldSet predicated:true
-  /// CHECK-NOT:     InstanceFieldSet predicated:true
-  //
-  /// CHECK-START: int Main.$noinline$testPartialEscape2(TestClass, boolean) load_store_elimination (after)
-  /// CHECK:         InstanceFieldGet
-  //
-  /// CHECK-NOT:     InstanceFieldGet
-  //
-  /// CHECK-START: int Main.$noinline$testPartialEscape2(TestClass, boolean) load_store_elimination (after)
-  /// CHECK:         PredicatedInstanceFieldGet
-  //
-  /// CHECK-NOT:     PredicatedInstanceFieldGet
-  private static int $noinline$testPartialEscape2(TestClass obj, boolean escape) {
-    TestClass i = new SubTestClass();
-    if ($noinline$getBoolean(escape)) {
-      i.next = obj;
-      $noinline$Escape(i);
-    } else {
-      i.next = obj;
-    }
-    $noinline$clobberObservables();
-    // Predicated-get
-    TestClass res = i.next;
-    // Predicated-set
-    i.next = null;
-    return res.i;
-  }
-
-  /// CHECK-START: float Main.$noinline$testPartialEscape3_float(boolean) load_store_elimination (before)
-  /// CHECK-NOT:     Phi
-  /// CHECK-NOT:     PredicatedInstanceFieldGet
-  //
-  /// CHECK-START: float Main.$noinline$testPartialEscape3_float(boolean) load_store_elimination (after)
-  /// CHECK:         Phi
-  /// CHECK:         Phi
-  /// CHECK-NOT:     Phi
-  //
-  /// CHECK-START: float Main.$noinline$testPartialEscape3_float(boolean) load_store_elimination (after)
-  /// CHECK:         InstanceFieldSet predicated:true
-  /// CHECK-NOT:     InstanceFieldSet predicated:true
-  //
-  /// CHECK-START: float Main.$noinline$testPartialEscape3_float(boolean) load_store_elimination (after)
-  /// CHECK:         PredicatedInstanceFieldGet
-  /// CHECK-NOT:     PredicatedInstanceFieldGet
-  private static float $noinline$testPartialEscape3_float(boolean escape) {
-    TestClass4 tc = new TestClass4();
-    if ($noinline$getBoolean(escape)) {
-      $noinline$Escape4(tc);
-    } else {
-      tc.floatField -= 1f;
-    }
-    // Partial escape
-    $noinline$clobberObservables();
-    // Predicated set
-    tc.floatField *= 10;
-    // Predicated get
-    return tc.floatField;
-  }
-
-  /// CHECK-START: double Main.$noinline$testPartialEscape3_double(boolean) load_store_elimination (before)
-  /// CHECK-NOT:     Phi
-  /// CHECK-NOT:     PredicatedInstanceFieldGet
-  //
-  /// CHECK-START: double Main.$noinline$testPartialEscape3_double(boolean) load_store_elimination (after)
-  /// CHECK:         Phi
-  /// CHECK:         Phi
-  /// CHECK-NOT:     Phi
-  //
-  /// CHECK-START: double Main.$noinline$testPartialEscape3_double(boolean) load_store_elimination (after)
-  /// CHECK:         InstanceFieldSet predicated:true
-  /// CHECK-NOT:     InstanceFieldSet predicated:true
-  //
-  /// CHECK-START: double Main.$noinline$testPartialEscape3_double(boolean) load_store_elimination (after)
-  /// CHECK:         PredicatedInstanceFieldGet
-  /// CHECK-NOT:     PredicatedInstanceFieldGet
-  private static double $noinline$testPartialEscape3_double(boolean escape) {
-    TestClass4 tc = new TestClass4();
-    if ($noinline$getBoolean(escape)) {
-      $noinline$Escape4(tc);
-    } else {
-      tc.doubleField -= 1d;
-    }
-    // Partial escape
-    $noinline$clobberObservables();
-    // Predicated set
-    tc.doubleField *= 10;
-    // Predicated get
-    return tc.doubleField;
-  }
-
-  /// CHECK-START: short Main.$noinline$testPartialEscape3_short(boolean) load_store_elimination (before)
-  /// CHECK-NOT:     Phi
-  /// CHECK-NOT:     PredicatedInstanceFieldGet
-  //
-  /// CHECK-START: short Main.$noinline$testPartialEscape3_short(boolean) load_store_elimination (after)
-  /// CHECK:         Phi
-  /// CHECK:         Phi
-  /// CHECK-NOT:     Phi
-  //
-  /// CHECK-START: short Main.$noinline$testPartialEscape3_short(boolean) load_store_elimination (after)
-  /// CHECK:         InstanceFieldSet predicated:true
-  /// CHECK-NOT:     InstanceFieldSet predicated:true
-  //
-  /// CHECK-START: short Main.$noinline$testPartialEscape3_short(boolean) load_store_elimination (after)
-  /// CHECK:         PredicatedInstanceFieldGet
-  /// CHECK-NOT:     PredicatedInstanceFieldGet
-  private static short $noinline$testPartialEscape3_short(boolean escape) {
-    TestClass4 tc = new TestClass4();
-    if ($noinline$getBoolean(escape)) {
-      $noinline$Escape4(tc);
-    } else {
-      tc.shortField -= 1;
-    }
-    // Partial escape
-    $noinline$clobberObservables();
-    // Predicated set
-    tc.shortField *= 10;
-    // Predicated get
-    return tc.shortField;
-  }
-
-  /// CHECK-START: byte Main.$noinline$testPartialEscape3_byte(boolean) load_store_elimination (before)
-  /// CHECK-NOT:     Phi
-  /// CHECK-NOT:     PredicatedInstanceFieldGet
-  //
-  /// CHECK-START: byte Main.$noinline$testPartialEscape3_byte(boolean) load_store_elimination (after)
-  /// CHECK:         Phi
-  /// CHECK:         Phi
-  /// CHECK-NOT:     Phi
-  //
-  /// CHECK-START: byte Main.$noinline$testPartialEscape3_byte(boolean) load_store_elimination (after)
-  /// CHECK:         InstanceFieldSet predicated:true
-  /// CHECK-NOT:     InstanceFieldSet predicated:true
-  //
-  /// CHECK-START: byte Main.$noinline$testPartialEscape3_byte(boolean) load_store_elimination (after)
-  /// CHECK:         PredicatedInstanceFieldGet
-  /// CHECK-NOT:     PredicatedInstanceFieldGet
-  private static byte $noinline$testPartialEscape3_byte(boolean escape) {
-    TestClass4 tc = new TestClass4();
-    if ($noinline$getBoolean(escape)) {
-      $noinline$Escape4(tc);
-    } else {
-      tc.byteField -= 1;
-    }
-    // Partial escape
-    $noinline$clobberObservables();
-    // Predicated set
-    tc.byteField *= 10;
-    // Predicated get
-    return tc.byteField;
-  }
-
-  /// CHECK-START: int Main.$noinline$testPartialEscape3_int(boolean) load_store_elimination (before)
-  /// CHECK-NOT:     Phi
-  /// CHECK-NOT:     PredicatedInstanceFieldGet
-  //
-  /// CHECK-START: int Main.$noinline$testPartialEscape3_int(boolean) load_store_elimination (after)
-  /// CHECK:         Phi
-  /// CHECK:         Phi
-  /// CHECK-NOT:     Phi
-  //
-  /// CHECK-START: int Main.$noinline$testPartialEscape3_int(boolean) load_store_elimination (after)
-  /// CHECK:         InstanceFieldSet predicated:true
-  /// CHECK-NOT:     InstanceFieldSet predicated:true
-  //
-  /// CHECK-START: int Main.$noinline$testPartialEscape3_int(boolean) load_store_elimination (after)
-  /// CHECK:         PredicatedInstanceFieldGet
-  /// CHECK-NOT:     PredicatedInstanceFieldGet
-  private static int $noinline$testPartialEscape3_int(boolean escape) {
-    TestClass4 tc = new TestClass4();
-    if ($noinline$getBoolean(escape)) {
-      $noinline$Escape4(tc);
-    } else {
-      tc.intField -= 1;
-    }
-    // Partial escape
-    $noinline$clobberObservables();
-    // Predicated set
-    tc.intField *= 10;
-    // Predicated get
-    return tc.intField;
-  }
-
-  /// CHECK-START: long Main.$noinline$testPartialEscape3_long(boolean) load_store_elimination (before)
-  /// CHECK-NOT:     Phi
-  /// CHECK-NOT:     PredicatedInstanceFieldGet
-  //
-  /// CHECK-START: long Main.$noinline$testPartialEscape3_long(boolean) load_store_elimination (after)
-  /// CHECK:         Phi
-  /// CHECK:         Phi
-  /// CHECK-NOT:     Phi
-  //
-  /// CHECK-START: long Main.$noinline$testPartialEscape3_long(boolean) load_store_elimination (after)
-  /// CHECK:         InstanceFieldSet predicated:true
-  /// CHECK-NOT:     InstanceFieldSet predicated:true
-  //
-  /// CHECK-START: long Main.$noinline$testPartialEscape3_long(boolean) load_store_elimination (after)
-  /// CHECK:         PredicatedInstanceFieldGet
-  /// CHECK-NOT:     PredicatedInstanceFieldGet
-  private static long $noinline$testPartialEscape3_long(boolean escape) {
-    TestClass4 tc = new TestClass4();
-    if ($noinline$getBoolean(escape)) {
-      $noinline$Escape4(tc);
-    } else {
-      tc.longField -= 1;
-    }
-    // Partial escape
-    $noinline$clobberObservables();
-    // Predicated set
-    tc.longField *= 10;
-    // Predicated get
-    return tc.longField;
-  }
-
   private static void $noinline$clobberObservables() {}
 
   static void assertLongEquals(long result, long expected) {
@@ -4613,19 +4370,5 @@
     assertLongEquals(testOverlapLoop(50), 7778742049l);
     assertIntEquals($noinline$testPartialEscape1(new TestClass(), true), 1);
     assertIntEquals($noinline$testPartialEscape1(new TestClass(), false), 0);
-    assertIntEquals($noinline$testPartialEscape2(new TestClass(), true), 1);
-    assertIntEquals($noinline$testPartialEscape2(new TestClass(), false), 0);
-    assertDoubleEquals($noinline$testPartialEscape3_double(true), -20d);
-    assertDoubleEquals($noinline$testPartialEscape3_double(false), -40d);
-    assertFloatEquals($noinline$testPartialEscape3_float(true), -20f);
-    assertFloatEquals($noinline$testPartialEscape3_float(false), -40f);
-    assertIntEquals($noinline$testPartialEscape3_int(true), -20);
-    assertIntEquals($noinline$testPartialEscape3_int(false), -40);
-    assertIntEquals($noinline$testPartialEscape3_byte(true), -20);
-    assertIntEquals($noinline$testPartialEscape3_byte(false), -40);
-    assertIntEquals($noinline$testPartialEscape3_short(true), -20);
-    assertIntEquals($noinline$testPartialEscape3_short(false), -40);
-    assertLongEquals($noinline$testPartialEscape3_long(true), -20);
-    assertLongEquals($noinline$testPartialEscape3_long(false), -40);
   }
 }
diff --git a/test/639-checker-code-sinking/src/Main.java b/test/639-checker-code-sinking/src/Main.java
index 28fa57c..91c3ec4 100644
--- a/test/639-checker-code-sinking/src/Main.java
+++ b/test/639-checker-code-sinking/src/Main.java
@@ -110,8 +110,6 @@
   /// CHECK: <<Int42:i\d+>>       IntConstant 42
   /// CHECK:                      begin_block
   /// CHECK: <<LoadClass:l\d+>>   LoadClass class_name:Main
-  /// CHECK:                      If
-  /// CHECK:                      begin_block
   /// CHECK: <<NewInstance:l\d+>> NewInstance [<<LoadClass>>]
   /// CHECK:                      InstanceFieldSet [<<NewInstance>>,<<Int42>>]
   /// CHECK:                      Throw
@@ -121,14 +119,14 @@
   /// CHECK-NOT:                  NewInstance
   /// CHECK:                      If
   /// CHECK:                      begin_block
+  /// CHECK: <<Error:l\d+>>       LoadClass class_name:java.lang.Error
+  /// CHECK-NOT:                  begin_block
   /// CHECK: <<LoadClass:l\d+>>   LoadClass class_name:Main
   /// CHECK-NOT:                  begin_block
   /// CHECK: <<NewInstance:l\d+>> NewInstance [<<LoadClass>>]
   /// CHECK-NOT:                  begin_block
   /// CHECK:                      InstanceFieldSet [<<NewInstance>>,<<Int42>>]
   /// CHECK-NOT:                  begin_block
-  /// CHECK: <<Error:l\d+>>       LoadClass class_name:java.lang.Error
-  /// CHECK-NOT:                  begin_block
   /// CHECK: <<Throw:l\d+>>       NewInstance [<<Error>>]
   /// CHECK-NOT:                  begin_block
   /// CHECK:                      Throw [<<Throw>>]
@@ -325,12 +323,7 @@
   /// CHECK: <<Int42:i\d+>>       IntConstant 42
   /// CHECK: <<Int43:i\d+>>       IntConstant 43
   /// CHECK: <<LoadClass:l\d+>>   LoadClass class_name:Main
-  /// CHECK:                      If
-  /// CHECK:                      begin_block
-  // Moved to throw block by partial-LSE and DCE.
   /// CHECK: <<NewInstance:l\d+>> NewInstance [<<LoadClass>>]
-  // These were moved by partial LSE and order of sets is not observable and are
-  // in an arbitrary order.
   /// CHECK-DAG:                  InstanceFieldSet [<<NewInstance>>,<<Int42>>]
   /// CHECK-DAG:                  InstanceFieldSet [<<NewInstance>>,<<Int43>>]
   /// CHECK:                      Throw
@@ -342,14 +335,14 @@
   /// CHECK-NOT:                  NewInstance
   /// CHECK:                      If
   /// CHECK:                      begin_block
+  /// CHECK: <<Error:l\d+>>       LoadClass class_name:java.lang.Error
+  /// CHECK-NOT:                  begin_block
   /// CHECK: <<LoadClass:l\d+>>   LoadClass class_name:Main
   /// CHECK: <<NewInstance:l\d+>> NewInstance [<<LoadClass>>]
   /// CHECK-NOT:                  begin_block
   /// CHECK-DAG:                  InstanceFieldSet [<<NewInstance>>,<<Int42>>]
   /// CHECK-DAG:                  InstanceFieldSet [<<NewInstance>>,<<Int43>>]
   /// CHECK-NOT:                  begin_block
-  /// CHECK: <<Error:l\d+>>       LoadClass class_name:java.lang.Error
-  /// CHECK-NOT:                  begin_block
   /// CHECK:                      NewInstance [<<Error>>]
   /// CHECK:                      Throw
   /// CHECK-NOT:                  InstanceFieldSet
diff --git a/test/826-infinite-loop/expected-stderr.txt b/test/826-infinite-loop/expected-stderr.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/826-infinite-loop/expected-stderr.txt
diff --git a/test/826-infinite-loop/expected-stdout.txt b/test/826-infinite-loop/expected-stdout.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/826-infinite-loop/expected-stdout.txt
diff --git a/test/826-infinite-loop/info.txt b/test/826-infinite-loop/info.txt
new file mode 100644
index 0000000..13a89d8
--- /dev/null
+++ b/test/826-infinite-loop/info.txt
@@ -0,0 +1,2 @@
+Regression test for partial escape elimination, which used to crash when
+visiting an infinite loop.
diff --git a/test/826-infinite-loop/src/Main.java b/test/826-infinite-loop/src/Main.java
new file mode 100644
index 0000000..85bcb28
--- /dev/null
+++ b/test/826-infinite-loop/src/Main.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+final class Main {
+  public static void main(String[] args) {
+    Object o = new Object();
+    if (args.length == 0) {
+      while (true) {
+        System.out.println(new Object());
+      }
+    }
+  }
+}
diff --git a/test/828-partial-lse/expected-stderr.txt b/test/828-partial-lse/expected-stderr.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/828-partial-lse/expected-stderr.txt
diff --git a/test/828-partial-lse/expected-stdout.txt b/test/828-partial-lse/expected-stdout.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/828-partial-lse/expected-stdout.txt
diff --git a/test/828-partial-lse/info.txt b/test/828-partial-lse/info.txt
new file mode 100644
index 0000000..8d28cbd
--- /dev/null
+++ b/test/828-partial-lse/info.txt
@@ -0,0 +1,2 @@
+Regression test for the partial LSE pass, see
+https://issuetracker.google.com/197818595.
diff --git a/test/828-partial-lse/src/Main.java b/test/828-partial-lse/src/Main.java
new file mode 100644
index 0000000..2dde0ef
--- /dev/null
+++ b/test/828-partial-lse/src/Main.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+class Main {
+
+  public static void $noinline$testMain(Main m) {
+    expectEquals(0, m.myField);
+  }
+
+  public static void main(String[] args) {
+    $noinline$doTest(true);
+    $noinline$doTest(false);
+  }
+
+  public static void $noinline$doTest(boolean testValue) {
+    Main m = new Main();
+    // LSE will find that this store can be removed, as both branches override the value with a new
+    // one.
+    m.myField = 42;
+    if (testValue) {
+      // LSE will remove this store as well, as it's the value after the store of 42 is removed.
+      m.myField = 0;
+      // This makes sure `m` gets materialized. At this point, the bug is that the partial LSE
+      // optimization thinks the value incoming this block for `m.myField` is 42, however that
+      // store, as well as the store to 0, have been removed.
+      $noinline$testMain(m);
+    } else {
+      m.myField = 3;
+      expectEquals(3, m.myField);
+    }
+  }
+
+  public static void expectEquals(int expected, int actual) {
+    if (expected != actual) {
+      throw new Error("Expected " + expected + ", got " + actual);
+    }
+  }
+
+  int myField = 0;
+}
diff --git a/test/830-goto-zero/expected-stderr.txt b/test/830-goto-zero/expected-stderr.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/830-goto-zero/expected-stderr.txt
diff --git a/test/830-goto-zero/expected-stdout.txt b/test/830-goto-zero/expected-stdout.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/830-goto-zero/expected-stdout.txt
diff --git a/test/830-goto-zero/info.txt b/test/830-goto-zero/info.txt
new file mode 100644
index 0000000..356d22f
--- /dev/null
+++ b/test/830-goto-zero/info.txt
@@ -0,0 +1 @@
+Regression test for missing suspend checks in nterp when branching to zero.
diff --git a/test/830-goto-zero/smali/SmaliClass.smali b/test/830-goto-zero/smali/SmaliClass.smali
new file mode 100644
index 0000000..06ad3d4
--- /dev/null
+++ b/test/830-goto-zero/smali/SmaliClass.smali
@@ -0,0 +1,29 @@
+# Copyright (C) 2021 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public LSmaliClass;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+  .registers 1
+  invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+  return-void
+.end method
+
+.method public static gotoZero()V
+  .registers 0
+  :Linfinite_loop
+  goto/32 :Linfinite_loop
+  return-void
+.end method
diff --git a/test/830-goto-zero/src/Main.java b/test/830-goto-zero/src/Main.java
new file mode 100644
index 0000000..d3d0d2c
--- /dev/null
+++ b/test/830-goto-zero/src/Main.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.lang.reflect.Method;
+
+public class Main {
+
+    public static void main(String args[]) throws Exception {
+      b2302318Test();
+    }
+
+    static void b2302318Test() {
+      SpinThread st = new SpinThread();
+      st.setDaemon(true);
+      st.start();
+      Thread.yield();
+      Runtime.getRuntime().gc();
+    }
+
+}
+class SpinThread extends Thread {
+    public void run() {
+      try {
+        Class<?> cls = Class.forName("SmaliClass");
+        cls.getDeclaredMethod("gotoZero").invoke(null);
+      } catch (Exception e) {
+        throw new Error(e);
+      }
+    }
+}
diff --git a/test/831-unverified-bcp/expected-stderr.txt b/test/831-unverified-bcp/expected-stderr.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/831-unverified-bcp/expected-stderr.txt
diff --git a/test/831-unverified-bcp/expected-stdout.txt b/test/831-unverified-bcp/expected-stdout.txt
new file mode 100644
index 0000000..6a5618e
--- /dev/null
+++ b/test/831-unverified-bcp/expected-stdout.txt
@@ -0,0 +1 @@
+JNI_OnLoad called
diff --git a/test/831-unverified-bcp/info.txt b/test/831-unverified-bcp/info.txt
new file mode 100644
index 0000000..b4f7aeb
--- /dev/null
+++ b/test/831-unverified-bcp/info.txt
@@ -0,0 +1,2 @@
+Regression test for class resolution, where the class linker would not check if
+an exception was pending after looking up a class in the boot classpath.
diff --git a/test/831-unverified-bcp/smali-ex/NonVerifiedClass.smali b/test/831-unverified-bcp/smali-ex/NonVerifiedClass.smali
new file mode 100644
index 0000000..986f70a
--- /dev/null
+++ b/test/831-unverified-bcp/smali-ex/NonVerifiedClass.smali
@@ -0,0 +1,23 @@
+# Copyright 2021 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public LNonVerifiedClass;
+.super Ljava/util/Objects;
+
+.method public constructor <init>()V
+    .registers 1
+    invoke-direct {p0}, Ljava/util/Objects;-><init>()V
+    return-void
+.end method
+
diff --git a/test/831-unverified-bcp/src/Main.java b/test/831-unverified-bcp/src/Main.java
new file mode 100644
index 0000000..853d8ed
--- /dev/null
+++ b/test/831-unverified-bcp/src/Main.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import dalvik.system.PathClassLoader;
+import java.io.File;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.nio.file.Files;
+import java.util.Arrays;
+
+public class Main {
+
+  public static void main(String[] args) throws Exception {
+    System.loadLibrary(args[0]);
+    appendToBootClassLoader(OTHER_DEX, /* isCorePlatform */ false);
+
+    try {
+      Class.forName("NonVerifiedClass");
+      throw new Error("Expected VerifyError");
+    } catch (VerifyError e) {
+      // Expected.
+    }
+  }
+
+  private static native int appendToBootClassLoader(String dexPath, boolean isCorePlatform);
+
+  private static final String OTHER_DEX =
+      new File(System.getenv("DEX_LOCATION"), "831-unverified-bcp-ex.jar").getAbsolutePath();
+}
+
+// Define the class also in the classpath, to trigger the AssertNoPendingException crash.
+class NonVerifiedClass {
+}
diff --git a/test/925-threadgroups/run b/test/925-threadgroups/run
index c6e62ae..8e44166 100755
--- a/test/925-threadgroups/run
+++ b/test/925-threadgroups/run
@@ -14,4 +14,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-./default-run "$@" --jvmti
+./default-run "$@" --jvmti --runtime-option -Xmetrics-reporting-mods:100
diff --git a/test/Android.bp b/test/Android.bp
index 1b890fe..fbef1ff 100644
--- a/test/Android.bp
+++ b/test/Android.bp
@@ -32,8 +32,24 @@
     ],
 }
 
+// Properties common to `art_test_defaults` and `art_standalone_test_defaults`.
+art_module_cc_defaults {
+    name: "art_test_common_defaults",
+    target: {
+        darwin: {
+            enabled: false,
+        },
+    },
+    cflags: [
+        "-Wno-frame-larger-than=",
+    ],
+}
+
 art_module_cc_defaults {
     name: "art_test_defaults",
+    defaults: [
+        "art_test_common_defaults",
+    ],
     host_supported: true,
     soong_config_variables: {
         source_build: {
@@ -62,13 +78,7 @@
         android_x86_64: {
             relative_install_path: "art/x86_64",
         },
-        darwin: {
-            enabled: false,
-        },
     },
-    cflags: [
-        "-Wno-frame-larger-than=",
-    ],
     // Tests aren't generally included in any APEX, but this is necessary to
     // avoid duplicate install rules for them by making them unavailable to platform.
     apex_available: [
@@ -102,31 +112,38 @@
     },
 }
 
-art_cc_defaults {
-    name: "art_gtest_defaults",
-    // These really are gtests, but the gtest library comes from libart-gtest.so
-    gtest: false,
-    defaults: [
-        "art_test_defaults",
-        "art_debug_defaults",
-        "art_defaults",
+// Test configuration template for standalone ART gtests on target (not bundled with the ART APEX).
+filegroup {
+    name: "art-gtests-target-standalone-template",
+    srcs: [
+        "art-gtests-target-standalone-template.xml",
     ],
+}
 
-    test_suites: ["art-host-tests"],
-    test_options: {
-        test_suite_tag: ["art-host-gtest"],
-    },
+art_cc_defaults {
+    name: "art_standalone_test_defaults",
+    defaults: [
+        "art_test_common_defaults",
+    ],
+    // Standalone ART gtests are only supported on device for now.
+    // TODO: Add support for host standalone ART gtests. Note that they should not differ much
+    // from the original ("non-standalone") host gtests, as the latter are not really bundled with
+    // the host ART APEX / artifacts (unlike their device counterparts); but as we plan to remove
+    // the ART gtests bundled with the ART APEX, we'll have to support the host case here
+    // eventually.
+    host_supported: false,
+    test_config_template: ":art-gtests-target-standalone-template",
+}
+
+// Properties common to `art_gtest_defaults` and `art_standalone_gtest_defaults`.
+art_cc_defaults {
+    name: "art_gtest_common_defaults",
+    // These really are gtests, but the gtest library comes from `libart(d)-gtest.so`.
+    gtest: false,
 
     shared_libs: [
-        "libartd",
-        "libartd-disassembler",
-        "libart-gtest",
-        "libdexfiled",
-        "libprofiled",
-        "libartbased",
-
         "libbase",
-        "libnativehelper",
+        "liblog",
         "libz",
     ],
 
@@ -152,27 +169,120 @@
                 "libziparchive",
             ],
         },
-        android: {
-            shared_libs: [
-                "liblog",
-            ],
-        },
     },
 }
 
 art_cc_defaults {
-    name: "libart-gtest-defaults",
-    host_supported: true,
+    name: "art_gtest_defaults",
     defaults: [
+        "art_test_defaults",
+        "art_gtest_common_defaults",
         "art_debug_defaults",
         "art_defaults",
     ],
+
+    test_suites: ["art-host-tests"],
+    test_options: {
+        test_suite_tag: ["art-host-gtest"],
+    },
+
     shared_libs: [
         "libartd",
-        "libartd-compiler",
+        "libartd-disassembler",
+        "libartd-gtest",
         "libdexfiled",
         "libprofiled",
         "libartbased",
+
+        // Library `libnativehelper` needs to appear after `libartd` here,
+        // otherwise the following tests from module `libartd-runtime-gtest`
+        // will fail because `art/runtime/jni/java_vm_ext.cc` and
+        // `libnativehelper/JniInvocation.c` define symbols with the same name
+        // (e.g. `JNI_GetDefaultJavaVMInitArgs`) and the link order does matter
+        // for these tests:
+        // - JavaVmExtTest#JNI_GetDefaultJavaVMInitArgs
+        // - JavaVmExtTest#JNI_GetCreatedJavaVMs
+        // - JavaVmExtTest#AttachCurrentThread
+        // - JavaVmExtTest#AttachCurrentThreadAsDaemon
+        // - JavaVmExtTest#AttachCurrentThread_SmallStack
+        "libnativehelper",
+    ],
+}
+
+art_cc_defaults {
+    name: "art_standalone_gtest_defaults",
+    defaults: [
+        // Note: We don't include "art_debug_defaults" here, as standalone ART
+        // gtests link with the "non-d" versions of the libraries contained in
+        // the ART APEX, so that they can be used with all ART APEX flavors
+        // (including the Release ART APEX).
+        "art_standalone_test_defaults",
+        "art_gtest_common_defaults",
+        "art_defaults",
+    ],
+
+    test_suites: [
+        "general-tests",
+        "mts-art",
+    ],
+
+    // Support multilib variants (using different suffix per sub-architecture), which is needed on
+    // build targets with secondary architectures, as the MTS test suite packaging logic flattens
+    // all test artifacts into a single `testcases` directory.
+    compile_multilib: "both",
+    multilib: {
+        lib32: {
+            suffix: "32",
+        },
+        lib64: {
+            suffix: "64",
+        },
+    },
+
+    // We use the "non-d" variants of libraries, as the Release ART APEX does
+    // not contain the "d" (debug) variants.
+    shared_libs: [
+        "libart",
+        "libart-disassembler",
+        "libdexfile",
+        "libprofile",
+        "libartbase",
+
+        // Library `libnativehelper` needs to appear after `libart` here,
+        // otherwise the following tests from module `libart-runtime-gtest`
+        // will fail because `art/runtime/jni/java_vm_ext.cc` and
+        // `libnativehelper/JniInvocation.c` define symbols with the same name
+        // (e.g. `JNI_GetDefaultJavaVMInitArgs`) and the link order does matter
+        // for these tests:
+        // - JavaVmExtTest#JNI_GetDefaultJavaVMInitArgs
+        // - JavaVmExtTest#JNI_GetCreatedJavaVMs
+        // - JavaVmExtTest#AttachCurrentThread
+        // - JavaVmExtTest#AttachCurrentThreadAsDaemon
+        // - JavaVmExtTest#AttachCurrentThread_SmallStack
+        "libnativehelper",
+    ],
+    static_libs: [
+        // For now, link `libart-gtest` statically for simplicity, to save the
+        // added complexity to package it in test suites (along with other test
+        // artifacts) and install it on device during tests.
+        // TODO(b/192070541): Consider linking `libart-gtest` dynamically.
+        "libart-gtest",
+    ],
+
+    test_for: [
+        "com.android.art",
+        "com.android.art.debug",
+    ],
+}
+
+// Properties common to `libart-gtest-defaults` and `libartd-gtest-defaults`.
+art_cc_defaults {
+    name: "libart-gtest-common-defaults",
+    defaults: [
+        "art_defaults",
+    ],
+    host_supported: true,
+    shared_libs: [
         "liblog",
     ],
     static_libs: [
@@ -206,21 +316,25 @@
     ],
 }
 
-art_cc_library {
-    name: "libart-gtest",
-    host_supported: true,
+art_cc_defaults {
+    name: "libart-gtest-defaults",
+    defaults: [
+        "libart-gtest-common-defaults",
+    ],
+    shared_libs: [
+        "libart",
+        "libart-compiler",
+        "libdexfile",
+        "libprofile",
+        "libartbase",
+    ],
+}
+
+art_cc_defaults {
+    name: "libartd-gtest-defaults",
     defaults: [
         "art_debug_defaults",
-        "art_defaults",
-    ],
-    srcs: [
-        "common/gtest_main.cc",
-    ],
-    whole_static_libs: [
-        "libart-compiler-gtest",
-        "libart-runtime-gtest",
-        "libartbase-art-gtest",
-        "libgtest_isolated",
+        "libart-gtest-common-defaults",
     ],
     shared_libs: [
         "libartd",
@@ -228,6 +342,23 @@
         "libdexfiled",
         "libprofiled",
         "libartbased",
+    ],
+}
+
+// Properties common to `libart-gtest` and `libartd-gtest`.
+art_cc_defaults {
+    name: "libart-gtest-common",
+    defaults: [
+        "art_defaults",
+    ],
+    host_supported: true,
+    srcs: [
+        "common/gtest_main.cc",
+    ],
+    whole_static_libs: [
+        "libgtest_isolated",
+    ],
+    shared_libs: [
         "libbase",
         "libbacktrace",
         "liblog",
@@ -246,6 +377,45 @@
     ],
 }
 
+art_cc_library {
+    name: "libart-gtest",
+    defaults: [
+        "libart-gtest-common",
+    ],
+    whole_static_libs: [
+        "libart-compiler-gtest",
+        "libart-runtime-gtest",
+        "libartbase-art-gtest",
+    ],
+    shared_libs: [
+        "libart",
+        "libart-compiler",
+        "libdexfile",
+        "libprofile",
+        "libartbase",
+    ],
+}
+
+art_cc_library {
+    name: "libartd-gtest",
+    defaults: [
+        "art_debug_defaults",
+        "libart-gtest-common",
+    ],
+    whole_static_libs: [
+        "libartd-compiler-gtest",
+        "libartd-runtime-gtest",
+        "libartbased-art-gtest",
+    ],
+    shared_libs: [
+        "libartd",
+        "libartd-compiler",
+        "libdexfiled",
+        "libprofiled",
+        "libartbased",
+    ],
+}
+
 // ART run-tests.
 
 // Test configuration template for ART run-tests on target expected to run
diff --git a/test/art-gtests-target-chroot.xml b/test/art-gtests-target-chroot.xml
index f274ff1..4768a3f 100644
--- a/test/art-gtests-target-chroot.xml
+++ b/test/art-gtests-target-chroot.xml
@@ -35,4 +35,7 @@
         <!-- ART Mainline Module (external (AOSP) version). -->
         <option name="mainline-module-package-name" value="com.android.art" />
     </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
 </configuration>
diff --git a/test/art-gtests-target-install-apex.xml b/test/art-gtests-target-install-apex.xml
index 39c46fb..5ca51e8 100644
--- a/test/art-gtests-target-install-apex.xml
+++ b/test/art-gtests-target-install-apex.xml
@@ -36,4 +36,7 @@
         <!-- ART Mainline Module (external (AOSP) version). -->
         <option name="mainline-module-package-name" value="com.android.art" />
     </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
 </configuration>
diff --git a/test/art-gtests-target-standalone-template.xml b/test/art-gtests-target-standalone-template.xml
new file mode 100644
index 0000000..015b60e
--- /dev/null
+++ b/test/art-gtests-target-standalone-template.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<!-- Note: This test config file for {MODULE} is generated from a template. -->
+<configuration description="Runs {MODULE}.">
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="{MODULE}->/data/local/tmp/{MODULE}/{MODULE}" />
+        <option name="append-bitness" value="true" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.GTest" >
+        <option name="native-test-device-path" value="/data/local/tmp/{MODULE}" />
+        <option name="module-name" value="{MODULE}" />
+        <option name="ld-library-path-32" value="/apex/com.android.art/lib" />
+        <option name="ld-library-path-64" value="/apex/com.android.art/lib64" />
+    </test>
+
+    <!-- When this test is run in a Mainline context (e.g. with `mts-tradefed`), only enable it if
+         one of the Mainline modules below is present on the device used for testing. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
+        <!-- ART Mainline Module (internal version). -->
+        <option name="mainline-module-package-name" value="com.google.android.art" />
+        <!-- ART Mainline Module (external (AOSP) version). -->
+        <option name="mainline-module-package-name" value="com.android.art" />
+    </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
+</configuration>
diff --git a/test/art-run-test-target-no-test-suite-tag-template.xml b/test/art-run-test-target-no-test-suite-tag-template.xml
index 7e7b592..6406626 100644
--- a/test/art-run-test-target-no-test-suite-tag-template.xml
+++ b/test/art-run-test-target-no-test-suite-tag-template.xml
@@ -35,4 +35,7 @@
         <!-- ART Mainline Module (external (AOSP) version). -->
         <option name="mainline-module-package-name" value="com.android.art" />
     </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
 </configuration>
diff --git a/test/art-run-test-target-template.xml b/test/art-run-test-target-template.xml
index 4084afa..433654a 100644
--- a/test/art-run-test-target-template.xml
+++ b/test/art-run-test-target-template.xml
@@ -38,4 +38,7 @@
         <!-- ART Mainline Module (external (AOSP) version). -->
         <option name="mainline-module-package-name" value="com.android.art" />
     </object>
+
+    <!--- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
 </configuration>
diff --git a/test/knownfailures.json b/test/knownfailures.json
index d9b089d..abeddaa 100644
--- a/test/knownfailures.json
+++ b/test/knownfailures.json
@@ -1142,6 +1142,8 @@
                   "820-vdex-multidex",
                   "821-many-args",
                   "822-hiddenapi-future",
+                  "830-goto-zero",
+                  "831-unverified-bcp",
                   "999-redefine-hiddenapi",
                   "1000-non-moving-space-stress",
                   "1001-app-image-regions",
diff --git a/test/odsign/test-src/com/android/tests/odsign/OnDeviceSigningHostTest.java b/test/odsign/test-src/com/android/tests/odsign/OnDeviceSigningHostTest.java
index e44bc80..add3199 100644
--- a/test/odsign/test-src/com/android/tests/odsign/OnDeviceSigningHostTest.java
+++ b/test/odsign/test-src/com/android/tests/odsign/OnDeviceSigningHostTest.java
@@ -228,6 +228,65 @@
         verifySystemServerLoadedArtifacts();
     }
 
+    @Test
+    public void verifyGeneratedArtifactsLoadedForSamegradeUpdate() throws Exception {
+        // Install the same APEX effecting a samegrade update. The setUp method has installed it
+        // before us.
+        mInstallUtils.installApexes(APEX_FILENAME);
+        reboot();
+
+        final boolean adbEnabled = getDevice().enableAdbRoot();
+        assertTrue("ADB root failed and required to get odrefresh compilation log", adbEnabled);
+
+        // Check that odrefresh logged a compilation attempt due to samegrade ART APEX install.
+        String[] logLines = getDevice().pullFileContents(ODREFRESH_COMPILATION_LOG).split("\n");
+        assertTrue(
+                "Expected 3 lines in " + ODREFRESH_COMPILATION_LOG + ", found " + logLines.length,
+                logLines.length == 3);
+
+        // Check that the compilation log entries are reasonable, ie times move forward.
+        // The first line of the log is the log format version number.
+        String[] firstUpdateEntry = logLines[1].split(" ");
+        String[] secondUpdateEntry = logLines[2].split(" ");
+        final int LOG_ENTRY_FIELDS = 5;
+        assertTrue(
+                "Unexpected number of fields: " + firstUpdateEntry.length + " != " +
+                LOG_ENTRY_FIELDS,
+                firstUpdateEntry.length == LOG_ENTRY_FIELDS);
+        assertTrue(firstUpdateEntry.length == secondUpdateEntry.length);
+
+        final int LAST_UPDATE_MILLIS_INDEX = 1;
+        final int COMPILATION_TIME_INDEX = 3;
+        for (int i = 0; i < firstUpdateEntry.length; ++i) {
+            final long firstField = Long.parseLong(firstUpdateEntry[i]);
+            final long secondField = Long.parseLong(secondUpdateEntry[i]);
+            if (i == LAST_UPDATE_MILLIS_INDEX) {
+                // The second APEX lastUpdateMillis should be after the first, but a clock
+                // adjustment might reverse the order so we can't assert this (b/194365586).
+                assertTrue(
+                        "Last update times are expected to differ, but they are equal " +
+                        firstField + " == " + secondField,
+                        firstField != secondField);
+            } else if (i == COMPILATION_TIME_INDEX) {
+                // The second compilation time should be after the first compilation time, but
+                // a clock adjustment might reverse the order so we can't assert this
+                // (b/194365586).
+                assertTrue(
+                        "Compilation times are expected to differ, but they are equal " +
+                        firstField + " == " + secondField,
+                        firstField != secondField);
+            } else {
+                // The remaining fields should be the same, ie trigger for compilation.
+                assertTrue(
+                        "Compilation entries differ for position " + i + ": " +
+                        firstField + " != " + secondField,
+                        firstField == secondField);
+            }
+        }
+
+        verifyGeneratedArtifactsLoaded();
+    }
+
     private boolean haveCompilationLog() throws Exception {
         CommandResult result =
                 getDevice().executeShellV2Command("stat " + ODREFRESH_COMPILATION_LOG);
diff --git a/test/utils/regen-test-files b/test/utils/regen-test-files
index 6f7cea0..3fe9bac 100755
--- a/test/utils/regen-test-files
+++ b/test/utils/regen-test-files
@@ -462,6 +462,34 @@
 # This value has to be a number between 0 and 100.
 mainline_presubmit_tests_percentage = 100
 
+# ART gtests that do not need root access to the device.
+art_gtest_user_module_names = [
+    "art_standalone_cmdline_tests",
+    "art_standalone_compiler_tests",
+    "art_standalone_dex2oat_tests",
+    "art_standalone_dexdump_tests",
+    "art_standalone_dexlist_tests",
+    "art_standalone_libartbase_tests",
+    "art_standalone_libartpalette_tests",
+    "art_standalone_libdexfile_support_tests",
+    "art_standalone_libdexfile_tests",
+    "art_standalone_libprofile_tests",
+    "art_standalone_oatdump_tests",
+    "art_standalone_odrefresh_tests",
+    "art_standalone_runtime_compiler_tests",
+    "art_standalone_runtime_tests",
+    "art_standalone_sigchain_tests",
+]
+
+# ART gtests that need root access to the device.
+art_gtest_eng_only_module_names = [
+    "art_standalone_dexoptanalyzer_tests",
+    "art_standalone_profman_tests",
+]
+
+# All supported ART gtests.
+art_gtest_module_names = sorted(art_gtest_user_module_names + art_gtest_eng_only_module_names)
+
 
 # Is `run_test` a Checker test (i.e. a test containing Checker
 # assertions)?
@@ -608,10 +636,12 @@
     run_test_module_names = [ART_RUN_TEST_MODULE_NAME_PREFIX + t for t in art_run_tests]
 
     # Mainline presubmits.
-    mainline_presubmit_run_tests = [t + "[com.google.android.art.apex]"
-                                    for t
-                                    in run_test_module_names[0:num_mainline_presubmit_run_tests]]
-    mainline_presubmit_tests_dict = [{"name": t} for t in mainline_presubmit_run_tests]
+    mainline_presubmit_run_tests = run_test_module_names[0:num_mainline_presubmit_run_tests]
+    mainline_presubmit_tests = mainline_presubmit_run_tests + art_gtest_module_names
+    mainline_presubmit_tests_with_apex = [t + "[com.google.android.art.apex]"
+                                          for t
+                                          in mainline_presubmit_tests]
+    mainline_presubmit_tests_dict = [{"name": t} for t in mainline_presubmit_tests_with_apex]
 
     # Presubmits.
     other_presubmit_tests = [
@@ -619,7 +649,7 @@
         "BootImageProfileTest",
     ]
     presubmit_run_tests = run_test_module_names[0:num_presubmit_run_tests]
-    presubmit_tests = other_presubmit_tests + presubmit_run_tests
+    presubmit_tests = other_presubmit_tests + presubmit_run_tests + art_gtest_module_names
     presubmit_tests_dict = [{"name": t} for t in presubmit_tests]
 
     # Postsubmits.
@@ -808,14 +838,22 @@
 
     mts_test_shards = []
 
-    # ART run-test shard(s).
+    # ART test (gtest & run-test) shard(s).
+    # TODO: Also handle the case of gtests requiring root access to the device
+    # (`art_gtest_eng_only_module_names`).
     art_run_test_module_names = [ART_RUN_TEST_MODULE_NAME_PREFIX + t for t in art_run_tests]
     art_run_test_shards = split_list(art_run_test_module_names, NUM_MTS_ART_RUN_TEST_SHARDS)
     for i in range(len(art_run_test_shards)):
-      art_run_test_shard = self.create_mts_test_shard(
-          "ART run-tests", art_run_test_shards[i], i, 2020,
+      art_tests_shard_i_tests = art_run_test_shards[i]
+      # Append ART gtests to the last ART run-test shard for now.
+      # If needed, consider moving them to their own shard to increase
+      # the parallelization of code coverage runs.
+      if i + 1 == len(art_run_test_shards):
+        art_tests_shard_i_tests.extend(art_gtest_user_module_names)
+      art_tests_shard_i = self.create_mts_test_shard(
+          "ART run-tests", art_tests_shard_i_tests, i, 2020,
           ["TODO(rpl): Find a way to express this list in a more concise fashion."])
-      mts_test_shards.append(art_run_test_shard)
+      mts_test_shards.append(art_tests_shard_i)
 
     # CTS Libcore non-OJ tests (`CtsLibcoreTestCases`) shard.
     cts_libcore_tests_shard_num = len(mts_test_shards)
@@ -826,8 +864,13 @@
     # Other CTS Libcore tests shard.
     other_cts_libcore_tests_shard_num = len(mts_test_shards)
     other_cts_libcore_tests_shard_tests = [
+        "CtsLibcoreApiEvolutionTestCases",
+        "CtsLibcoreFileIOTestCases",
+        "CtsLibcoreJsr166TestCases",
+        "CtsLibcoreLegacy22TestCases",
         "CtsLibcoreOjTestCases",
-        "CtsLibcoreJsr166TestCases"
+        "CtsLibcoreWycheproofBCTestCases",
+        "MtsLibcoreOkHttpTestCases",
     ]
     other_cts_libcore_tests_shard = self.create_mts_test_shard(
         "CTS Libcore OJ tests", other_cts_libcore_tests_shard_tests,
@@ -897,13 +940,16 @@
 
     print(f"Generated TEST_MAPPING entries for {len(expected_succeeding_tests)} ART run-tests out"
           f" of {len(run_tests)} ({expected_succeeding_tests_percentage}%):")
-    for (num_tests, tests_percentage, test_group_name) in [
-        (num_mainline_presubmit_run_tests, mainline_presubmit_tests_percentage,
+    for (num_tests, test_kind, tests_percentage, test_group_name) in [
+        (num_mainline_presubmit_run_tests, "ART run-tests", mainline_presubmit_tests_percentage,
          "mainline-presubmit"),
-        (num_presubmit_run_tests, presubmit_tests_percentage, "presubmit"),
-        (num_postsubmit_tests, postsubmit_tests_percentage, "postsubmit"),
+        (len(art_gtest_module_names), "ART gtests", 100, "mainline-presubmit"),
+        (num_presubmit_run_tests, "ART run-tests", presubmit_tests_percentage, "presubmit"),
+        (len(art_gtest_module_names), "ART gtests", 100, "presubmit"),
+        (num_postsubmit_tests, "ART run-tests", postsubmit_tests_percentage, "postsubmit"),
     ]:
-      print(f"  {num_tests} tests ({tests_percentage}%) in `{test_group_name}` test group.")
+      print(
+          f"  {num_tests:3d} {test_kind} ({tests_percentage}%) in `{test_group_name}` test group.")
 
     # Regenerate ART MTS definition (optional).
     # -----------------------------------------
diff --git a/tools/build_linux_bionic.sh b/tools/build_linux_bionic.sh
index ad7e7bd..3c5a68f 100755
--- a/tools/build_linux_bionic.sh
+++ b/tools/build_linux_bionic.sh
@@ -31,7 +31,10 @@
   exit 1
 fi
 
-soong_args=""
+# TODO(b/194433871): Set MODULE_BUILD_FROM_SOURCE to disable prebuilt modules,
+# which Soong otherwise can create duplicate install rules for in --skip-make
+# mode.
+soong_args="MODULE_BUILD_FROM_SOURCE=true"
 
 # Switch the build system to unbundled mode in the reduced manifest branch.
 if [ ! -d frameworks/base ]; then
diff --git a/tools/hiddenapi/hiddenapi.cc b/tools/hiddenapi/hiddenapi.cc
index c249a7a..7954fa4 100644
--- a/tools/hiddenapi/hiddenapi.cc
+++ b/tools/hiddenapi/hiddenapi.cc
@@ -82,6 +82,11 @@
   UsageError("    --api-flags=<filename>:");
   UsageError("        CSV file with signatures of methods/fields and their respective flags");
   UsageError("");
+  UsageError("    --max-hiddenapi-level=<max-target-*>:");
+  UsageError("        the maximum hidden api level for APIs. If an API was originally restricted");
+  UsageError("        to a newer sdk, turn it into a regular unsupported API instead.");
+  UsageError("        instead. The full list of valid values is in hiddenapi_flags.h");
+  UsageError("");
   UsageError("    --no-force-assign-all:");
   UsageError("        Disable check that all dex entries have been assigned a flag");
   UsageError("");
@@ -99,6 +104,10 @@
   UsageError("        classpath. Multiple classpaths can be specified");
   UsageError("");
   UsageError("    --out-api-flags=<filename>: output file for a CSV file with API flags");
+  UsageError("    --fragment: the input is only a fragment of the whole bootclasspath and may");
+  UsageError("      not include a complete set of classes. That requires the tool to ignore");
+  UsageError("      missing classes and members. Specify --verbose to see the warnings.");
+  UsageError("    --verbose: output all warnings, even when --fragment is specified.");
   UsageError("");
 
   exit(EXIT_FAILURE);
@@ -448,8 +457,8 @@
 
 class Hierarchy final {
  public:
-  explicit Hierarchy(ClassPath& classpath) : classpath_(classpath) {
-    BuildClassHierarchy();
+  Hierarchy(ClassPath& classpath, bool fragment, bool verbose) : classpath_(classpath) {
+    BuildClassHierarchy(fragment, verbose);
   }
 
   // Perform an operation for each member of the hierarchy which could potentially
@@ -516,7 +525,7 @@
     }
   }
 
-  void BuildClassHierarchy() {
+  void BuildClassHierarchy(bool fragment, bool verbose) {
     // Create one HierarchyClass entry in `classes_` per class descriptor
     // and add all DexClass objects with the same descriptor to that entry.
     classpath_.ForEachDexClass([this](const DexClass& klass) {
@@ -536,12 +545,16 @@
 
       auto add_extends = [&](const std::string_view& extends_desc) {
         HierarchyClass* extends = FindClass(extends_desc);
-        CHECK(extends != nullptr)
-          << "Superclass/interface " << extends_desc
-          << " of class " << dex_klass.GetDescriptor() << " from dex file \""
-          << dex_klass.GetDexFile().GetLocation() << "\" was not found. "
-          << "Either it is missing or it appears later in the classpath spec.";
-        klass.AddExtends(*extends);
+        if (extends != nullptr) {
+          klass.AddExtends(*extends);
+        } else if (!fragment || verbose) {
+          auto severity = verbose ? ::android::base::WARNING : ::android::base::FATAL;
+          LOG(severity)
+              << "Superclass/interface " << extends_desc
+              << " of class " << dex_klass.GetDescriptor() << " from dex file \""
+              << dex_klass.GetDexFile().GetLocation() << "\" was not found. "
+              << "Either it is missing or it appears later in the classpath spec.";
+        }
       };
 
       add_extends(dex_klass.GetSuperclassDescriptor());
@@ -908,6 +921,8 @@
             api_flags_path_ = std::string(option.substr(strlen("--api-flags=")));
           } else if (option == "--no-force-assign-all") {
             force_assign_all_ = false;
+          } else if (StartsWith(option, "--max-hiddenapi-level=")) {
+            max_hiddenapi_level_ = std::string(option.substr(strlen("--max-hiddenapi-level=")));
           } else {
             Usage("Unknown argument '%s'", raw_option);
           }
@@ -942,6 +957,10 @@
                 ApiStubs::Kind::kCorePlatformApi));
           } else if (StartsWith(option, "--out-api-flags=")) {
             api_flags_path_ = std::string(option.substr(strlen("--out-api-flags=")));
+          } else if (option == "--fragment") {
+            fragment_ = true;
+          } else if (option == "--verbose") {
+            verbose_ = true;
           } else {
             Usage("Unknown argument '%s'", raw_option);
           }
@@ -1022,12 +1041,23 @@
 
       const std::string& signature = values[0];
 
+      // Skip signature
+      std::vector<std::string>::iterator apiListBegin = values.begin() + 1;
+      std::vector<std::string>::iterator apiListEnd = values.end();
+      if (!max_hiddenapi_level_.empty()) {
+          auto clamp_fn = [this](const std::string& apiListName) {
+              return ApiList::CoerceAtMost(apiListName,
+                                           max_hiddenapi_level_);
+          };
+          std::transform(apiListBegin, apiListEnd, apiListBegin, clamp_fn);
+      }
+
       CHECK(api_flag_map.find(signature) == api_flag_map.end()) << path << ":" << line_number
           << ": Duplicate entry: " << signature << kErrorHelp;
 
       ApiList membership;
 
-      bool success = ApiList::FromNames(values.begin() + 1, values.end(), &membership);
+      bool success = ApiList::FromNames(apiListBegin, apiListEnd, &membership);
       CHECK(success) << path << ":" << line_number
           << ": Some flags were not recognized: " << line << kErrorHelp;
       CHECK(membership.IsValid()) << path << ":" << line_number
@@ -1064,7 +1094,7 @@
     ClassPath boot_classpath(boot_dex_paths_,
                              /* open_writable= */ false,
                              /* ignore_empty= */ false);
-    Hierarchy boot_hierarchy(boot_classpath);
+    Hierarchy boot_hierarchy(boot_classpath, fragment_, verbose_);
 
     // Mark all boot dex members private.
     boot_classpath.ForEachDexMember([&](const DexMember& boot_member) {
@@ -1089,7 +1119,7 @@
       ClassPath stub_classpath(android::base::Split(cp_entry.first, ":"),
                                /* open_writable= */ false,
                                /* ignore_empty= */ true);
-      Hierarchy stub_hierarchy(stub_classpath);
+      Hierarchy stub_hierarchy(stub_classpath, fragment_, verbose_);
       const ApiStubs::Kind stub_api = cp_entry.second;
 
       stub_classpath.ForEachDexMember(
@@ -1113,8 +1143,10 @@
     }
 
     // Print errors.
-    for (const std::string& str : unresolved) {
-      LOG(WARNING) << "unresolved: " << str;
+    if (!fragment_ || verbose_) {
+      for (const std::string& str : unresolved) {
+        LOG(WARNING) << "unresolved: " << str;
+      }
     }
 
     // Write into public/private API files.
@@ -1156,6 +1188,17 @@
   // Path to CSV file containing the list of API members and their flags.
   // This could be both an input and output path.
   std::string api_flags_path_;
+
+  // Override limit for sdk-max-* hidden APIs.
+  std::string max_hiddenapi_level_;
+
+  // Whether the input is only a fragment of the whole bootclasspath and may
+  // not include a complete set of classes. That requires the tool to ignore missing
+  // classes and members.
+  bool fragment_ = false;
+
+  // Whether to output all warnings, even when `fragment_` is set.
+  bool verbose_ = false;
 };
 
 }  // namespace hiddenapi
diff --git a/tools/hiddenapi/hiddenapi_test.cc b/tools/hiddenapi/hiddenapi_test.cc
index 81e3f160..2593edd 100644
--- a/tools/hiddenapi/hiddenapi_test.cc
+++ b/tools/hiddenapi/hiddenapi_test.cc
@@ -66,8 +66,8 @@
 
     std::vector<std::string> argv_str;
     argv_str.push_back(GetHiddenApiCmd());
-    argv_str.insert(argv_str.end(), extra_args.begin(), extra_args.end());
     argv_str.push_back("encode");
+    argv_str.insert(argv_str.end(), extra_args.begin(), extra_args.end());
     argv_str.push_back("--input-dex=" + in_dex.GetFilename());
     argv_str.push_back("--output-dex=" + out_dex.GetFilename());
     argv_str.push_back("--api-flags=" + flags_csv.GetFilename());
@@ -724,6 +724,60 @@
   ASSERT_EQ(dex_file.get(), nullptr);
 }
 
+TEST_F(HiddenApiTest, InstanceFieldMaxSdkHigherThanMaxHiddenApiLevel) {
+  ScratchFile dex, flags_csv;
+  OpenStream(flags_csv)
+      << "LMain;->ifield:I,max-target-r" << std::endl;
+  auto dex_file = RunHiddenapiEncode(flags_csv, {"--max-hiddenapi-level=max-target-q"}, dex);
+  ASSERT_NE(dex_file.get(), nullptr);
+  ASSERT_EQ(hiddenapi::ApiList::Unsupported(), GetIFieldHiddenFlags(*dex_file));
+}
+
+TEST_F(HiddenApiTest, InstanceFieldMaxSdkEqualsMaxHiddenApiLevel) {
+  ScratchFile dex, flags_csv;
+  OpenStream(flags_csv)
+      << "LMain;->ifield:I,max-target-r" << std::endl;
+  auto dex_file = RunHiddenapiEncode(flags_csv, {"--max-hiddenapi-level=max-target-r"}, dex);
+  ASSERT_NE(dex_file.get(), nullptr);
+  ASSERT_EQ(hiddenapi::ApiList::MaxTargetR(), GetIFieldHiddenFlags(*dex_file));
+}
+
+TEST_F(HiddenApiTest, InstanceFieldMaxSdkLowerThanMaxHiddenApiLevel) {
+  ScratchFile dex, flags_csv;
+  OpenStream(flags_csv)
+      << "LMain;->ifield:I,max-target-q" << std::endl;
+  auto dex_file = RunHiddenapiEncode(flags_csv, {"--max-hiddenapi-level=max-target-r"}, dex);
+  ASSERT_NE(dex_file.get(), nullptr);
+  ASSERT_EQ(hiddenapi::ApiList::MaxTargetQ(), GetIFieldHiddenFlags(*dex_file));
+}
+
+TEST_F(HiddenApiTest, InstanceFieldBlockedUnchangedByMaxHiddenApiLevel) {
+  ScratchFile dex, flags_csv;
+  OpenStream(flags_csv)
+      << "LMain;->ifield:I,blocked" << std::endl;
+  auto dex_file = RunHiddenapiEncode(flags_csv, {"--max-hiddenapi-level=max-target-r"}, dex);
+  ASSERT_NE(dex_file.get(), nullptr);
+  ASSERT_EQ(hiddenapi::ApiList::Blocked(), GetIFieldHiddenFlags(*dex_file));
+}
+
+TEST_F(HiddenApiTest, InstanceFieldUnsupportedUnchangedByMaxHiddenApiLevel) {
+  ScratchFile dex, flags_csv;
+  OpenStream(flags_csv)
+      << "LMain;->ifield:I,unsupported" << std::endl;
+  auto dex_file = RunHiddenapiEncode(flags_csv, {"--max-hiddenapi-level=max-target-r"}, dex);
+  ASSERT_NE(dex_file.get(), nullptr);
+  ASSERT_EQ(hiddenapi::ApiList::Unsupported(), GetIFieldHiddenFlags(*dex_file));
+}
+
+TEST_F(HiddenApiTest, InstanceFieldSdkUnchangedByMaxHiddenApiLevel) {
+  ScratchFile dex, flags_csv;
+  OpenStream(flags_csv)
+      << "LMain;->ifield:I,sdk" << std::endl;
+  auto dex_file = RunHiddenapiEncode(flags_csv, {"--max-hiddenapi-level=max-target-r"}, dex);
+  ASSERT_NE(dex_file.get(), nullptr);
+  ASSERT_EQ(hiddenapi::ApiList::Sdk(), GetIFieldHiddenFlags(*dex_file));
+}
+
 // The following tests use this class hierarchy:
 //
 //    AbstractPackageClass  PublicInterface