Remove JCTF tests.

Change-Id: I59b9f2c501bab5ab366ce263377d7c607b803f4d
diff --git a/.gitignore b/.gitignore
index b6fb8c3..45852a0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -100,8 +100,6 @@
 third_party/jacoco/0.8.6.tar.gz
 third_party/jasmin
 third_party/jasmin.tar.gz
-third_party/jctf
-third_party/jctf.tar.gz
 third_party/jdwp-tests
 third_party/jdwp-tests.tar.gz
 third_party/jsr223-api-1.0
diff --git a/build.gradle b/build.gradle
index aa31e9d..67074c7 100644
--- a/build.gradle
+++ b/build.gradle
@@ -48,8 +48,6 @@
     testngVersion = '6.10'
 }
 
-apply from: 'copyAdditionalJctfCommonFiles.gradle'
-
 repositories {
     maven {
        url 'https://storage.googleapis.com/r8-deps/maven_mirror/'
@@ -176,29 +174,6 @@
         compileClasspath += fileTree(dir: "build/generated/test/proto", include: "*.jar")
         output.resourcesDir = 'build/classes/examplesProto'
     }
-    jctfCommon {
-        java {
-            srcDirs = [
-                'third_party/jctf/Harness/src',
-                'third_party/jctf/LibTests/src/com/google/jctf/test/categories',
-                'third_party/jctf/LibTests/src/com/google/jctf/test/helper',
-                'third_party/jctf/LibTests/src/com/google/jctf/testHelpers',
-                'third_party/jctf/LibTests/src/org',
-                'build/additionalJctfCommonFiles'
-            ]
-        }
-        resources {
-            srcDirs = ['third_party/jctf/LibTests/resources']
-        }
-    }
-    jctfTests {
-        java {
-            srcDirs = [
-                'third_party/jctf/LibTests/src/com/google/jctf/test/lib',
-                // 'third_party/jctf/VMTests/src',
-            ]
-        }
-    }
     kotlinR8TestResources {
         java {
             srcDirs = ['src/test/kotlinR8TestResources']
@@ -286,9 +261,6 @@
     testCompile group: 'org.ow2.asm', name: 'asm-util', version: asmVersion
     testCompile group: 'it.unimi.dsi', name: 'fastutil', version: fastutilVersion
 
-    jctfCommonCompile "junit:junit:$junitVersion"
-    jctfTestsCompile "junit:junit:$junitVersion"
-    jctfTestsCompile sourceSets.jctfCommon.output
     examplesAndroidOCompile group: 'org.ow2.asm', name: 'asm', version: asmVersion
     examplesAndroidPCompile group: 'org.ow2.asm', name: 'asm', version: asmVersion
     // Import Guava for @Nullable annotation
@@ -352,7 +324,6 @@
                 "jacoco/0.8.2",
                 "jacoco/0.8.6",
                 "jasmin",
-                "jctf",
                 "junit",
                 "jdwp-tests",
                 "jsr223-api-1.0",
@@ -710,16 +681,6 @@
     }
 }
 
-compileJctfCommonJava {
-    dependsOn 'copyAdditionalJctfCommonFiles'
-    options.compilerArgs = ['-Xlint:none']
-}
-
-compileJctfTestsJava {
-    dependsOn 'jctfCommonClasses'
-    options.compilerArgs = ['-Xlint:none']
-}
-
 task consolidatedLicense {
     def license = new File(new File(buildDir, 'generatedLicense'), 'LICENSE')
 
@@ -1065,16 +1026,6 @@
     ])
 }
 
-task buildDesugaredLibrary(type: Exec) {
-    def outputDir = "build/libs"
-    def script = "tools/create_jctf_tests.py"
-    inputs.file script
-    outputs.dir outputDir
-    dependsOn downloadDeps
-    commandLine "python3", script
-    workingDir = projectDir
-}
-
 task generateR8LibKeepRules(type: Exec) {
     // Depend on r8WithRelocatedDeps to ensure that we do not have external
     // dependencies crossing the boundary.
@@ -1174,11 +1125,6 @@
     from sourceSets.main.allSource
 }
 
-task jctfCommonJar(type: Jar) {
-    from sourceSets.jctfCommon.output
-    archiveFileName = 'jctfCommon.jar'
-}
-
 artifacts {
     archives sourceJar
 }
@@ -1193,19 +1139,8 @@
     workingDir = projectDir
 }
 
-task createJctfTests(type: Exec) {
-    def outputDir = "build/generated/test/java/com/android/tools/r8/jctf"
-    def script = "tools/create_jctf_tests.py"
-    inputs.file script
-    outputs.dir outputDir
-    dependsOn downloadDeps
-    commandLine "python3", script
-    workingDir = projectDir
-}
-
 compileTestJava {
     dependsOn createArtTests
-    dependsOn createJctfTests
 }
 
 task buildCfSegments(type: Jar, dependsOn: downloadDeps) {
@@ -2316,29 +2251,14 @@
         include "com/android/tools/r8/" + project.getProperty('test_namespace') + "/**"
     }
 
-    if (project.hasProperty('tool')) {
-        if (project.property('tool') == 'r8') {
-            exclude "com/android/tools/r8/jctf/**"
-        } else if (project.property('tool') == 'd8') {
-            if (project.hasProperty('only_jctf')) {
-                include "com/android/tools/r8/jctf/d8/**"
-            } else {
-                // Don't run anything, deprecated
-                println "Running with deprecated tool d8, not running any tests"
-                include ""
-            }
-        } else {
-            assert(project.property('tool') == 'r8cf')
-            assert(project.hasProperty('only_jctf'))
-            include "com/android/tools/r8/jctf/r8cf/**"
-        }
+    if (project.hasProperty('tool') && project.property('tool') == 'd8') {
+        // Don't run anything, deprecated
+        println "Running with deprecated tool d8, not running any tests"
+        include ""
     }
     if (!project.hasProperty('all_tests')) {
         exclude "com/android/tools/r8/art/dx/**"
     }
-    if (!project.hasProperty('jctf') && !project.hasProperty('only_jctf')) {
-        exclude "com/android/tools/r8/jctf/**"
-    }
     if (project.hasProperty('shard_count') ) {
       assert project.hasProperty('shard_number')
       int shard_count = project.getProperty('shard_count') as Integer
@@ -2356,10 +2276,6 @@
           return hash % shard_count != shard_number
       }
     }
-    if (project.hasProperty('jctf_compile_only')) {
-        println "JCTF: compiling only"
-        systemProperty 'jctf_compile_only', '1'
-    }
     if (project.hasProperty('test_dir')) {
         systemProperty 'test_dir', project.property('test_dir')
     }
@@ -2389,8 +2305,6 @@
         dependsOn buildExamples
         dependsOn buildKotlinR8TestResources
         dependsOn buildSmali
-        dependsOn jctfCommonJar
-        dependsOn jctfTestsClasses
         dependsOn buildPreNJdwpTestsJar
         dependsOn buildPreNJdwpTestsDex
         dependsOn compileTestNGRunner
diff --git a/copyAdditionalJctfCommonFiles.gradle b/copyAdditionalJctfCommonFiles.gradle
deleted file mode 100644
index 9cf6dfe..0000000
--- a/copyAdditionalJctfCommonFiles.gradle
+++ /dev/null
@@ -1,220 +0,0 @@
-// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
-// The `copyAdditionalJctfCommonFiles` task copies files common to all JCTF test
-// cases into an intermediate directory which is then passed to gradle as a
-// source set.
-//
-// Details:
-//
-// The JCTF source tree consists of individual test cases and other sources
-// common to all test cases. The latter is compiled into a single jar file.
-//
-// The problem is the many common source files are scattered under the same
-// directory where the test cases are and gradle has no simple way to add
-// individual files to a source set.
-//
-// That's why we first copy over the common files into an intermediate directory
-// then pass gradle the source set as a single directory.
-
-task copyAdditionalJctfCommonFiles(type: Copy) {
-    def prefix = 'LibTests/src/com/google/jctf/test/lib/java'
-    def inputDir = 'third_party/jctf'
-    def outputDir = 'build/additionalJctfCommonFiles'
-    doFirst {
-        delete outputDir
-    }
-
-    // All the files containing "@Test" and also the files located in a directory where there is "@Test"
-    // file will be compiled into individual, per-test dex files.
-    // Here we need the files not containing "@Test" which are not siblings of "@Test" files. We compile
-    // them into a common jar file which will be added into each test's dex file.
-    //
-    // The following list is compiled with this script:
-    //
-    // # create list of directories that contain non-"@Test" files but do not contain "@Test" files
-    // dirlist=$(comm -23 \
-    // <(grep -rL "@Test" "third_party/jctf/LibTests/src/com/google/jctf/test/lib" --include=*.java | sed 's;/[^/]*\.java$;;' | sort | uniq) \
-    // <(grep -rl "@Test" "third_party/jctf/LibTests/src/com/google/jctf/test/lib" --include=*.java | sed 's;/[^/]*\.java$;;' | sort | uniq))
-    //
-    // # all the java files from these dirs
-    // (for d in $dirlist; do ls -1 $d/*.java; done) \
-    //   | sort | sed 's,.*test/lib/java/,,' | sed -E "s/(.*)/'\1',/"
-    def files = [
-        'lang/annotation/Annotation/AllTypesAntn2.java',
-        'lang/annotation/Annotation/AllTypesAntn.java',
-        'lang/Character/CharacterData.java',
-        'lang/Character/CharacterUtils.java',
-        'lang/Character/Subset/TestSubset.java',
-        'lang/Class/ClassAnnotationsData.java',
-        'lang/ClassLoader/EmptyCertificate.java',
-        'lang/ClassLoader/EmptyClassLoader.java',
-        'lang/ClassLoader/setPackageAssertionStatusLjava_lang_StringZ/pckg1/pckg11/C01.java',
-        'lang/ClassLoader/setPackageAssertionStatusLjava_lang_StringZ/pckg1/pckg11/pckg111/C01.java',
-        'lang/ClassLoader/setPackageAssertionStatusLjava_lang_StringZ/pckg1/pckg11/pckg111/C02.java',
-        'lang/ClassLoader/setPackageAssertionStatusLjava_lang_StringZ/pckg1/pckg12/C01.java',
-        'lang/Class/PackageAccessible.java',
-        'lang/Class/PackageInstantiable.java',
-        'lang/Enum/EnumMocks.java',
-        'lang/InheritableThreadLocal/TestThread.java',
-        'lang/Number/TestNumber.java',
-        'lang/Package/PackageAnnotationsData.java',
-        'lang/Package/PackageLoader.java',
-        'lang/ProcessBuilder/ProcessBuilderHelper.java',
-        'lang/reflect/AccessibleObject/ChildTestClass.java',
-        'lang/reflect/AccessibleObject/ClassTestAnnotation.java',
-        'lang/reflect/AccessibleObject/DefaultTestAnnotation.java',
-        'lang/reflect/AccessibleObject/Helper.java',
-        'lang/reflect/AccessibleObject/Runtime1TestAnnotation.java',
-        'lang/reflect/AccessibleObject/Runtime2TestAnnotation.java',
-        'lang/reflect/AccessibleObject/Runtime3TestAnnotation.java',
-        'lang/reflect/AccessibleObject/SourceTestAnnotation.java',
-        'lang/reflect/AccessibleObject/TestClass.java',
-        'lang/reflect/Constructor/ConstructorAnnotationsData.java',
-        'lang/reflect/Constructor/ConstructorTestHelper.java',
-        'lang/reflect/Constructor/PrivateClass.java',
-        'lang/reflect/Constructor/PrivateConstructor.java',
-        'lang/reflect/Field/FieldAnnotationsData.java',
-        'lang/reflect/Field/TestExceptionInInitializerError.java',
-        'lang/reflect/Field/TestFinalObjectField.java',
-        'lang/reflect/Field/TestFinalPrimitiveField.java',
-        'lang/reflect/Field/TestObjectField.java',
-        'lang/reflect/Field/TestOtherField.java',
-        'lang/reflect/Field/TestPrimitiveField.java',
-        'lang/reflect/Field/TestStaticFinalObjectField.java',
-        'lang/reflect/Field/TestStaticFinalPrimitiveField.java',
-        'lang/reflect/Field/TestStaticObjectField.java',
-        'lang/reflect/Field/TestStaticPrimitiveField.java',
-        'lang/reflect/Method/AbstractTestMethod.java',
-        'lang/reflect/Method/MethodAnnotationsData.java',
-        'lang/reflect/Method/PrivateClass.java',
-        'lang/reflect/Method/PrivateMethod.java',
-        'lang/reflect/Method/TestMethod.java',
-        'lang/reflect/Method/TestMethodSub.java',
-        'lang/reflect/Proxy/HiddenInterface.java',
-        'lang/reflect/Proxy/NullHandler.java',
-        'lang/ref/MemoryHog.java',
-        'lang/ref/MyReferenceQueue.java',
-        'lang/ref/PhantomReference/MyPhantomReference.java',
-        'lang/ref/SoftReference/MySoftReference.java',
-        'lang/ref/WeakReference/MyWeakReference.java',
-        'lang/Runtime/CountLoads.java',
-        'lang/Runtime/CWD.java',
-        'lang/Runtime/EchoArgs.java',
-        'lang/Runtime/EchoEnv.java',
-        'lang/SecurityManager/CheckingDomain.java',
-        'lang/SecurityManager/SecurityManagerTest.java',
-        'lang/StackTraceElement/ElementData.java',
-        'lang/StackTraceElement/InitTestFixture.java',
-        'lang/StackTraceElement/StaticInitTestFixture.java',
-        'lang/StackTraceElement/TestFixture.java',
-        'lang/StrictMath/FPUtil.java',
-        'lang/StringBuffer/MultiThreadTestHelper.java',
-        'lang/String/String_Character.java',
-        'lang/String/StringHelper.java',
-        'lang/String/String_ISO88591.java',
-        'lang/String/String_UnicodeCodePoint.java',
-        'lang/String/String_USASCII.java',
-        'lang/String/String_UTF16BE.java',
-        'lang/String/String_UTF16.java',
-        'lang/String/String_UTF16LE.java',
-        'lang/String/String_UTF8.java',
-        'lang/System/System_propertyKeys.java',
-        'lang/Thread/CatchThread.java',
-        'lang/Thread/CheckHandler.java',
-        'lang/Thread/CheckRun.java',
-        'lang/ThreadGroup/AccessCheckThread.java',
-        'lang/ThreadGroup/CatchGroup.java',
-        'lang/ThreadGroup/MyThread.java',
-        'lang/ThreadGroup/SMTestCheckAccessThreadGroupThrowSE.java',
-        'lang/ThreadGroup/SMTestCheckAccessThreadGroupWasCalled.java',
-        'lang/ThreadGroup/SMTestCheckAccessThreadThrowSE.java',
-        'lang/ThreadGroup/ThreadGroupHelper.java',
-        'lang/Thread/SlowIncThread.java',
-        'lang/Thread/StepThread.java',
-        'lang/Thread/WaitRun.java',
-        'lang/Throwable/Exception1.java',
-        'lang/Throwable/Exception2.java',
-        'lang/Throwable/Exception3.java',
-        'lang/Throwable/MethodStackFixture.java',
-        'lang/Throwable/MultipleExceptionsFixture.java',
-        'lang/Throwable/MultipleExceptionsStackChecker.java',
-        'util/concurrent/AbstractExecutorService/DirectExecutorService.java',
-        'util/concurrent/AdjustablePolicy.java',
-        'util/concurrent/ArrayBlockingQueue/ArrayBlockingQueueHelper.java',
-        'util/concurrent/CheckedCallable.java',
-        'util/concurrent/CheckedInterruptedCallable.java',
-        'util/concurrent/CheckedInterruptedRunnable.java',
-        'util/concurrent/CheckedRunnable.java',
-        'util/concurrent/ConcurrentHashMap/ConcurrentHashMapHelper.java',
-        'util/concurrent/ConcurrentLinkedQueue/ConcurrentLinkedQueueHelper.java',
-        'util/concurrent/ConcurrentSkipListMap/ConcurrentSkipListMapHelper.java',
-        'util/concurrent/ConcurrentSkipListSet/ConcurrentSkipListSetHelper.java',
-        'util/concurrent/ConcurrentSkipListSet/MyReverseComparator.java',
-        'util/concurrent/CopyOnWriteArrayList/CopyOnWriteArrayListHelper.java',
-        'util/concurrent/CopyOnWriteArraySet/CopyOnWriteArraySetHelper.java',
-        'util/concurrent/CyclicBarrier/MyAction.java',
-        'util/concurrent/DelayQueue/DelayQueueHelper.java',
-        'util/concurrent/DelayQueue/NanoDelay.java',
-        'util/concurrent/DelayQueue/PDelay.java',
-        'util/concurrent/FutureTask/CounterCallable.java',
-        'util/concurrent/FutureTask/PublicFutureTask.java',
-        'util/concurrent/Helper.java',
-        'util/concurrent/InterruptedCallable.java',
-        'util/concurrent/InterruptingCallable.java',
-        'util/concurrent/LinkedBlockingDeque/LinkedBlockingDequeHelper.java',
-        'util/concurrent/LinkedBlockingQueue/LinkedBlockingQueueHelper.java',
-        'util/concurrent/MediumPossiblyInterruptedRunnable.java',
-        'util/concurrent/MediumRunnable.java',
-        'util/concurrent/NoOpCallable.java',
-        'util/concurrent/NoOpREHandler.java',
-        'util/concurrent/NoOpRunnable.java',
-        'util/concurrent/NPETask.java',
-        'util/concurrent/PriorityBlockingQueue/MyReverseComparator.java',
-        'util/concurrent/PriorityBlockingQueue/PriorityBlockingQueueHelper.java',
-        'util/concurrent/RunnableShouldThrow.java',
-        'util/concurrent/ScheduledThreadPoolExecutor/CustomExecutor.java',
-        'util/concurrent/ScheduledThreadPoolExecutor/CustomTask.java',
-        'util/concurrent/ScheduledThreadPoolExecutor/RunnableCounter.java',
-        'util/concurrent/Semaphore/InterruptedLockRunnable.java',
-        'util/concurrent/Semaphore/InterruptibleLockRunnable.java',
-        'util/concurrent/Semaphore/PublicSemaphore.java',
-        'util/concurrent/ShortRunnable.java',
-        'util/concurrent/SimpleThreadFactory.java',
-        'util/concurrent/SmallCallable.java',
-        'util/concurrent/SmallPossiblyInterruptedRunnable.java',
-        'util/concurrent/SmallRunnable.java',
-        'util/concurrent/StringTask.java',
-        'util/concurrent/ThreadPoolExecutor/CustomTask.java',
-        'util/concurrent/ThreadPoolExecutor/CustomTPE.java',
-        'util/concurrent/ThreadPoolExecutor/ExtendedTPE.java',
-        'util/concurrent/ThreadPoolExecutor/FailingThreadFactory.java',
-        'util/concurrent/ThreadShouldThrow.java',
-        'util/concurrent/TrackedCallable.java',
-        'util/concurrent/TrackedLongRunnable.java',
-        'util/concurrent/TrackedNoOpRunnable.java',
-        'util/concurrent/TrackedShortRunnable.java',
-    ]
-    files.each {
-        def dir = new File(it).parent
-        from ("$inputDir/$prefix/$it") {
-            into "$prefix/$dir"
-        }
-
-    }
-
-    def prefixNoPackage = 'LibTests/src'
-    def filesNoPackage = [
-        'DefaultPackageInterface.java',
-        'UnnamedPackageClass.java'
-    ]
-    filesNoPackage.each {
-        from ("$inputDir/$prefixNoPackage/$it") {
-            into "$prefixNoPackage"
-        }
-    }
-
-    into outputDir
-}
diff --git a/src/test/java/com/android/tools/r8/JctfTestSpecifications.java b/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
deleted file mode 100644
index 118f3b1..0000000
--- a/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
+++ /dev/null
@@ -1,2027 +0,0 @@
-// Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.android.tools.r8;
-
-import static com.android.tools.r8.TestCondition.JAVA_RUNTIME;
-import static com.android.tools.r8.TestCondition.R8DEX_COMPILER;
-import static com.android.tools.r8.TestCondition.R8_COMPILER;
-import static com.android.tools.r8.TestCondition.and;
-import static com.android.tools.r8.TestCondition.any;
-import static com.android.tools.r8.TestCondition.anyDexVm;
-import static com.android.tools.r8.TestCondition.artRuntimesFrom;
-import static com.android.tools.r8.TestCondition.artRuntimesFromAndJava;
-import static com.android.tools.r8.TestCondition.artRuntimesUpTo;
-import static com.android.tools.r8.TestCondition.artRuntimesUpToAndJava;
-import static com.android.tools.r8.TestCondition.cf;
-import static com.android.tools.r8.TestCondition.match;
-import static com.android.tools.r8.TestCondition.runtimes;
-
-import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
-import com.android.tools.r8.R8RunArtTestsTest.DexTool;
-import com.android.tools.r8.TestCondition.Runtime;
-import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Multimap;
-import java.util.Collection;
-import java.util.Set;
-import java.util.function.BiFunction;
-
-public class JctfTestSpecifications {
-
-  public enum Outcome {
-    PASSES,
-    FAILS_WHEN_RUN,
-    TIMEOUTS_WHEN_RUN,
-    FLAKY_WHEN_RUN
-  }
-
-  public static final Multimap<String, TestCondition> failuresToTriage =
-      new ImmutableListMultimap.Builder<String, TestCondition>()
-          .put("math.BigInteger.nextProbablePrime.BigInteger_nextProbablePrime_A02", anyDexVm())
-          .put("math.BigInteger.ConstructorLjava_lang_String.BigInteger_Constructor_A02", any())
-          .put(
-              "lang.StringBuffer.insertILjava_lang_Object.StringBuffer_insert_A01",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT, Runtime.ART_V9_0_0, Runtime.ART_V8_1_0, Runtime.JAVA)))
-          .put("lang.StringBuffer.serialization.StringBuffer_serialization_A01", anyDexVm())
-          .put(
-              "lang.CloneNotSupportedException.serialization.CloneNotSupportedException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.NumberFormatException.serialization.NumberFormatException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.StrictMath.roundF.StrictMath_round_A01",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.JAVA)))
-          .put(
-              "lang.StrictMath.roundD.StrictMath_round_A01",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.JAVA)))
-          .put("lang.StrictMath.atan2DD.StrictMath_atan2_A01", any())
-          .put("lang.Thread.stop.Thread_stop_A05", any())
-          .put("lang.Thread.resume.Thread_resume_A02", anyDexVm())
-          .put("lang.Thread.suspend.Thread_suspend_A02", anyDexVm())
-          .put("lang.Thread.stop.Thread_stop_A03", any())
-          .put("lang.Thread.interrupt.Thread_interrupt_A03", any())
-          .put("lang.Thread.stop.Thread_stop_A04", any())
-          .put(
-              "lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_StringJ.Thread_Constructor_A01",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1)))
-          .put(
-              "lang.Thread.getUncaughtExceptionHandler.Thread_getUncaughtExceptionHandler_A01",
-              anyDexVm())
-          .put("lang.Thread.getStackTrace.Thread_getStackTrace_A02", anyDexVm())
-          .put("lang.Thread.enumerate_Ljava_lang_Thread.Thread_enumerate_A02", anyDexVm())
-          .put("lang.Thread.countStackFrames.Thread_countStackFrames_A01", any())
-          .put(
-              "lang.Thread.getAllStackTraces.Thread_getAllStackTraces_A01",
-              match(runtimes(Runtime.ART_V7_0_0)))
-          .put("lang.Thread.destroy.Thread_destroy_A01", match(artRuntimesFrom(Runtime.ART_V4_4_4)))
-          .put("lang.Thread.isAlive.Thread_isAlive_A01", anyDexVm())
-          .put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A04", any())
-          .put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A03", any())
-          .put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A05", any())
-          .put("lang.Thread.getPriority.Thread_getPriority_A01", anyDexVm())
-          .put(
-              "lang.Thread.getContextClassLoader.Thread_getContextClassLoader_A03",
-              match(runtimes(Runtime.ART_V7_0_0)))
-          .put("lang.OutOfMemoryError.serialization.OutOfMemoryError_serialization_A01", anyDexVm())
-          .put(
-              "lang.RuntimePermission.ConstructorLjava_lang_StringLjava_lang_String.RuntimePermission_Constructor_A01",
-              anyDexVm())
-          .put(
-              "lang.RuntimePermission.serialization.RuntimePermission_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.RuntimePermission.ConstructorLjava_lang_StringLjava_lang_String.RuntimePermission_Constructor_A02",
-              anyDexVm())
-          .put(
-              "lang.RuntimePermission.ConstructorLjava_lang_StringLjava_lang_String.RuntimePermission_Constructor_A03",
-              anyDexVm())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A17", any())
-          .put(
-              "lang.RuntimePermission.ConstructorLjava_lang_String.RuntimePermission_Constructor_A02",
-              anyDexVm())
-          .put(
-              "lang.RuntimePermission.ConstructorLjava_lang_String.RuntimePermission_Constructor_A03",
-              anyDexVm())
-          .put(
-              "lang.RuntimePermission.ConstructorLjava_lang_String.RuntimePermission_Constructor_A01",
-              anyDexVm())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A26", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A04", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A03", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A25", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A06", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A21", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A22", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A11", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A08", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A16", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A12", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A24", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A23", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A18", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A19", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A07", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A20", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A15", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A05", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A09", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A10", any())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A01", any())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A06",
-              anyDexVm())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A14", any())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A05",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A02",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A04",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A03",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A07",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.setPackageAssertionStatusLjava_lang_StringZ.ClassLoader_setPackageAssertionStatus_A02",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.setPackageAssertionStatusLjava_lang_StringZ.ClassLoader_setPackageAssertionStatus_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.setPackageAssertionStatusLjava_lang_StringZ.ClassLoader_setPackageAssertionStatus_A03",
-              anyDexVm())
-          .put("lang.ClassLoader.loadClassLjava_lang_StringZ.ClassLoader_loadClass_A03", anyDexVm())
-          .put("lang.ClassLoader.loadClassLjava_lang_StringZ.ClassLoader_loadClass_A01", anyDexVm())
-          .put("lang.ClassLoader.loadClassLjava_lang_StringZ.ClassLoader_loadClass_A04", anyDexVm())
-          .put(
-              "lang.ClassLoader.definePackageLjava_lang_String6Ljava_net_URL.ClassLoader_definePackage_A02",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.definePackageLjava_lang_String6Ljava_net_URL.ClassLoader_definePackage_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.definePackageLjava_lang_String6Ljava_net_URL.ClassLoader_definePackage_A03",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A05",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.getResourceLjava_lang_String.ClassLoader_getResource_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A02",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A06",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A03",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A07",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0)))
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A04",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.setSignersLjava_lang_Class_Ljava_lang_Object.ClassLoader_setSigners_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.clearAssertionStatus.ClassLoader_clearAssertionStatus_A01",
-              anyDexVm())
-          .put("lang.ClassLoader.Constructor.ClassLoader_Constructor_A02", anyDexVm())
-          .put(
-              "lang.ClassLoader.getSystemResourceLjava_lang_String.ClassLoader_getSystemResource_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.getResourcesLjava_lang_String.ClassLoader_getResources_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.resolveClassLjava_lang_Class.ClassLoader_resolveClass_A02",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.getResourceAsStreamLjava_lang_String.ClassLoader_getResourceAsStream_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.findLoadedClassLjava_lang_String.ClassLoader_findLoadedClass_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A02",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.resolveClassLjava_lang_Class.ClassLoader_resolveClass_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.setDefaultAssertionStatusZ.ClassLoader_setDefaultAssertionStatus_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A05",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A06",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A08",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A03",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.getSystemResourcesLjava_lang_String.ClassLoader_getSystemResources_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A07",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A09",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A04",
-              anyDexVm())
-          .put("lang.ClassLoader.defineClass_BII.ClassLoader_defineClass_A02", anyDexVm())
-          .put(
-              "lang.ClassLoader.getSystemResourceAsStreamLjava_lang_String.ClassLoader_getSystemResourceAsStream_A01",
-              anyDexVm())
-          .put("lang.ClassLoader.getPackages.ClassLoader_getPackages_A01", anyDexVm())
-          .put(
-              "lang.ClassLoader.setClassAssertionStatusLjava_lang_StringZ.ClassLoader_setClassAssertionStatus_A01",
-              any())
-          .put("lang.ClassLoader.defineClass_BII.ClassLoader_defineClass_A03", anyDexVm())
-          .put("lang.ClassLoader.defineClass_BII.ClassLoader_defineClass_A01", anyDexVm())
-          .put("lang.ClassLoader.defineClass_BII.ClassLoader_defineClass_A04", anyDexVm())
-          .put("lang.ClassLoader.getParent.ClassLoader_getParent_A01", anyDexVm())
-          .put(
-              "lang.ClassLoader.setClassAssertionStatusLjava_lang_StringZ.ClassLoader_setClassAssertionStatus_A04",
-              any())
-          .put(
-              "lang.ClassLoader.setClassAssertionStatusLjava_lang_StringZ.ClassLoader_setClassAssertionStatus_A02",
-              anyDexVm())
-          .put("lang.ClassLoader.getParent.ClassLoader_getParent_A02", anyDexVm())
-          .put(
-              "lang.ClassLoader.getSystemClassLoader.ClassLoader_getSystemClassLoader_A02",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.ConstructorLjava_lang_ClassLoader.ClassLoader_Constructor_A02",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.findSystemClassLjava_lang_String.ClassLoader_findSystemClass_A04",
-              anyDexVm())
-          .put(
-              "lang.ClassLoader.getPackageLjava_lang_String.ClassLoader_getPackage_A01", anyDexVm())
-          .put(
-              "lang.NoClassDefFoundError.serialization.NoClassDefFoundError_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.TypeNotPresentException.serialization.TypeNotPresentException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.IndexOutOfBoundsException.serialization.IndexOutOfBoundsException_serialization_A01",
-              anyDexVm())
-          .put("lang.Enum.serialization.Enum_serialization_A01", anyDexVm())
-          .put("lang.Enum.ConstructorLjava_lang_StringI.Enum_Constructor_A01", anyDexVm())
-          .put("lang.InternalError.serialization.InternalError_serialization_A01", anyDexVm())
-          .put("lang.Error.serialization.Error_serialization_A01", anyDexVm())
-          .put("lang.Runtime.loadLjava_lang_String.Runtime_load_A02", any())
-          .put("lang.Runtime.loadLjava_lang_String.Runtime_load_A05", any())
-          .put("lang.Runtime.loadLjava_lang_String.Runtime_load_A03", any())
-          .put("lang.Runtime.loadLjava_lang_String.Runtime_load_A04", any())
-          .put("lang.Runtime.exec_Ljava_lang_String.Runtime_exec_A02", anyDexVm())
-          .put("lang.Runtime.exec_Ljava_lang_String.Runtime_exec_A03", anyDexVm())
-          .put("lang.Runtime.exec_Ljava_lang_String.Runtime_exec_A01", anyDexVm())
-          .put("lang.Runtime.loadLibraryLjava_lang_String.Runtime_loadLibrary_A04", any())
-          .put("lang.Runtime.loadLibraryLjava_lang_String.Runtime_loadLibrary_A05", any())
-          .put("lang.Runtime.loadLibraryLjava_lang_String.Runtime_loadLibrary_A03", any())
-          .put("lang.Runtime.execLjava_lang_String.Runtime_exec_A02", anyDexVm())
-          .put("lang.Runtime.execLjava_lang_String.Runtime_exec_A03", anyDexVm())
-          .put("lang.Runtime.loadLibraryLjava_lang_String.Runtime_loadLibrary_A02", any())
-          .put("lang.Runtime.traceMethodCallsZ.Runtime_traceMethodCalls_A01", anyDexVm())
-          .put(
-              "lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A01",
-              anyDexVm())
-          .put(
-              "lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A08",
-              anyDexVm())
-          .put("lang.Runtime.execLjava_lang_String.Runtime_exec_A01", anyDexVm())
-          .put(
-              "lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A03",
-              anyDexVm())
-          .put(
-              "lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A07",
-              anyDexVm())
-          .put(
-              "lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A05",
-              anyDexVm())
-          .put(
-              "lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A06",
-              anyDexVm())
-          .put("lang.Runtime.execLjava_lang_String_Ljava_lang_String.Runtime_exec_A03", anyDexVm())
-          .put("lang.Runtime.execLjava_lang_String_Ljava_lang_String.Runtime_exec_A02", anyDexVm())
-          .put("lang.Runtime.execLjava_lang_String_Ljava_lang_String.Runtime_exec_A01", anyDexVm())
-          .put(
-              "lang.Runtime.removeShutdownHookLjava_lang_Thread.Runtime_removeShutdownHook_A02",
-              anyDexVm())
-          .put("lang.Runtime.exec_Ljava_lang_String_Ljava_lang_String.Runtime_exec_A01", anyDexVm())
-          .put(
-              "lang.Runtime.removeShutdownHookLjava_lang_Thread.Runtime_removeShutdownHook_A01",
-              anyDexVm())
-          .put("lang.Runtime.exec_Ljava_lang_String_Ljava_lang_String.Runtime_exec_A02", anyDexVm())
-          .put(
-              "lang.Runtime.removeShutdownHookLjava_lang_Thread.Runtime_removeShutdownHook_A03",
-              anyDexVm())
-          .put(
-              "lang.Runtime.exec_Ljava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A01",
-              anyDexVm())
-          .put("lang.Runtime.exec_Ljava_lang_String_Ljava_lang_String.Runtime_exec_A03", anyDexVm())
-          .put(
-              "lang.Runtime.exec_Ljava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A02",
-              anyDexVm())
-          .put("lang.Runtime.haltI.Runtime_halt_A02", any())
-          .put(
-              "lang.Runtime.exec_Ljava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A03",
-              anyDexVm())
-          .put("lang.Runtime.haltI.Runtime_halt_A03", any())
-          .put("lang.Runtime.runFinalizersOnExitZ.Runtime_runFinalizersOnExit_A01", anyDexVm())
-          .put("lang.Runtime.haltI.Runtime_halt_A01", any())
-          .put("lang.Runtime.runFinalizersOnExitZ.Runtime_runFinalizersOnExit_A03", anyDexVm())
-          .put(
-              "lang.Runtime.execLjava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A03",
-              anyDexVm())
-          .put(
-              "lang.Runtime.execLjava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A01",
-              anyDexVm())
-          .put("lang.Runtime.runFinalizersOnExitZ.Runtime_runFinalizersOnExit_A02", anyDexVm())
-          .put("lang.Runtime.exitI.Runtime_exit_A03", any())
-          .put(
-              "lang.Runtime.execLjava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A02",
-              anyDexVm())
-          .put("lang.Runtime.exitI.Runtime_exit_A04", any())
-          .put(
-              "lang.NoSuchMethodException.serialization.NoSuchMethodException_serialization_A01",
-              anyDexVm())
-          .put("lang.Runtime.exitI.Runtime_exit_A01", any())
-          .put("lang.Runtime.exitI.Runtime_exit_A02", any())
-          .put(
-              "lang.InstantiationException.serialization.InstantiationException_serialization_A01",
-              anyDexVm())
-          .put("lang.Exception.serialization.Exception_serialization_A01", anyDexVm())
-          .put(
-              "lang.StackOverflowError.serialization.StackOverflowError_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.NoSuchFieldException.serialization.NoSuchFieldException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.NegativeArraySizeException.serialization.NegativeArraySizeException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.ArrayIndexOutOfBoundsException.serialization.ArrayIndexOutOfBoundsException_serialization_A01",
-              anyDexVm())
-          .put("lang.VerifyError.serialization.VerifyError_serialization_A01", anyDexVm())
-          .put(
-              "lang.IllegalArgumentException.serialization.IllegalArgumentException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.IllegalStateException.serialization.IllegalStateException_serialization_A01",
-              anyDexVm())
-          .put("lang.Double.serialization.Double_serialization_A01", anyDexVm())
-          .put("lang.Double.toStringD.Double_toString_A05", any())
-          .put(
-              "lang.ArithmeticException.serialization.ArithmeticException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.ExceptionInInitializerError.serialization.ExceptionInInitializerError_serialization_A01",
-              anyDexVm())
-          .put("lang.ThreadLocal.Class.ThreadLocal_class_A01", anyDexVm())
-          .put("lang.Byte.serialization.Byte_serialization_A01", anyDexVm())
-          .put(
-              "lang.Byte.parseByteLjava_lang_StringI.Byte_parseByte_A02",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put(
-              "lang.Byte.valueOfLjava_lang_StringI.Byte_valueOf_A02",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put(
-              "lang.Byte.valueOfLjava_lang_String.Byte_ValueOf_A02",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put(
-              "lang.Byte.decodeLjava_lang_String.Byte_decode_A04",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put("lang.LinkageError.serialization.LinkageError_serialization_A01", anyDexVm())
-          .put(
-              "lang.ClassCastException.serialization.ClassCastException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.Byte.ConstructorLjava_lang_String.Byte_Constructor_A02",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put(
-              "lang.Byte.parseByteLjava_lang_String.Byte_parseByte_A02",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put("lang.NoSuchFieldError.serialization.NoSuchFieldError_serialization_A01", anyDexVm())
-          .put(
-              "lang.UnsupportedOperationException.serialization.UnsupportedOperationException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.NoSuchMethodError.serialization.NoSuchMethodError_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.IllegalMonitorStateException.serialization.IllegalMonitorStateException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.StringIndexOutOfBoundsException.serialization.StringIndexOutOfBoundsException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityException.serialization.SecurityException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.IllegalAccessError.serialization.IllegalAccessError_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.ArrayStoreException.serialization.ArrayStoreException_serialization_A01",
-              anyDexVm())
-          .put("lang.UnknownError.serialization.UnknownError_serialization_A01", anyDexVm())
-          .put("lang.Boolean.serialization.Boolean_serialization_A01", anyDexVm())
-          .put(
-              "lang.Integer.valueOfLjava_lang_StringI.Integer_valueOf_A02",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put("lang.Integer.serialization.Integer_serialization_A01", anyDexVm())
-          .put(
-              "lang.Integer.parseIntLjava_lang_String.Integer_parseInt_A02",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put(
-              "lang.Integer.getIntegerLjava_lang_StringI.Integer_getInteger_A02",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put(
-              "lang.Integer.valueOfLjava_lang_String.Integer_valueOf_A02",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put(
-              "lang.Integer.decodeLjava_lang_String.Integer_decode_A04",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put(
-              "lang.Integer.parseIntLjava_lang_StringI.Integer_parseInt_A02",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put(
-              "lang.Integer.getIntegerLjava_lang_StringLjava_lang_Integer.Integer_getInteger_A02",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put(
-              "lang.Integer.ConstructorLjava_lang_String.Integer_Constructor_A02",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put(
-              "lang.Integer.getIntegerLjava_lang_String.Integer_getInteger_A02",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1,
-                      Runtime.JAVA)))
-          .put(
-              "lang.ref.PhantomReference.isEnqueued.PhantomReference_isEnqueued_A01",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1)))
-          .put(
-              "lang.ref.SoftReference.isEnqueued.SoftReference_isEnqueued_A01",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1)))
-          .put("lang.ref.SoftReference.get.SoftReference_get_A01", anyDexVm())
-          .put("lang.ref.SoftReference.clear.SoftReference_clear_A01", cf())
-          .put(
-              "lang.ref.ReferenceQueue.poll.ReferenceQueue_poll_A01",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V6_0_1,
-                      Runtime.ART_V5_1_1)))
-          .put(
-              "lang.StackTraceElement.serialization.StackTraceElement_serialization_A01",
-              anyDexVm())
-          .put("lang.ref.WeakReference.get.WeakReference_get_A01", anyDexVm())
-          .put(
-              "lang.StackTraceElement.toString.StackTraceElement_toString_A01",
-              match(runtimes(Runtime.ART_DEFAULT, Runtime.ART_V9_0_0, Runtime.ART_V8_1_0)))
-          .put(
-              "lang.NullPointerException.serialization.NullPointerException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.VirtualMachineError.serialization.VirtualMachineError_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.ClassCircularityError.serialization.ClassCircularityError_serialization_A01",
-              anyDexVm())
-          .put("lang.ThreadDeath.serialization.ThreadDeath_serialization_A01", anyDexVm())
-          .put(
-              "lang.InstantiationError.serialization.InstantiationError_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.IllegalThreadStateException.serialization.IllegalThreadStateException_serialization_A01",
-              anyDexVm())
-          .put("lang.ProcessBuilder.environment.ProcessBuilder_environment_A05", anyDexVm())
-          .put("lang.ProcessBuilder.environment.ProcessBuilder_environment_A06", anyDexVm())
-          .put("lang.ProcessBuilder.start.ProcessBuilder_start_A05", anyDexVm())
-          .put("lang.ProcessBuilder.start.ProcessBuilder_start_A06", anyDexVm())
-          .put("lang.ClassFormatError.serialization.ClassFormatError_serialization_A01", anyDexVm())
-          .put("lang.Math.cbrtD.Math_cbrt_A01", match(artRuntimesFrom(Runtime.ART_V6_0_1)))
-          .put("lang.Math.powDD.Math_pow_A08", anyDexVm())
-          .put(
-              "lang.IncompatibleClassChangeError.serialization.IncompatibleClassChangeError_serialization_A01",
-              anyDexVm())
-          .put("lang.Float.serialization.Float_serialization_A01", anyDexVm())
-          .put("lang.Float.toStringF.Float_toString_A02", any())
-          .put(
-              "lang.Short.valueOfLjava_lang_StringI.Short_valueOf_A02",
-              match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
-          .put(
-              "lang.Short.valueOfLjava_lang_String.Short_valueOf_A02",
-              match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
-          .put("lang.Short.serialization.Short_serialization_A01", anyDexVm())
-          .put(
-              "lang.Short.parseShortLjava_lang_String.Short_parseShort_A02",
-              match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
-          .put(
-              "lang.Short.decodeLjava_lang_String.Short_decode_A04",
-              match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
-          .put(
-              "lang.Short.ConstructorLjava_lang_String.Short_Constructor_A02",
-              match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
-          .put(
-              "lang.ClassNotFoundException.serialization.ClassNotFoundException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.annotation.AnnotationFormatError.serialization.AnnotationFormatError_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.Short.parseShortLjava_lang_StringI.Short_parseShort_A02",
-              match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
-          .put(
-              "lang.annotation.IncompleteAnnotationException.ConstructorLjava_lang_ClassLjava_lang_String.IncompleteAnnotationException_Constructor_A01",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT, Runtime.ART_V9_0_0, Runtime.ART_V8_1_0, Runtime.JAVA)))
-          .put(
-              "lang.InterruptedException.serialization.InterruptedException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.annotation.IncompleteAnnotationException.Class.IncompleteAnnotationException_class_A01",
-              any())
-          .put("lang.annotation.Annotation.Class.Annotation_class_A03", anyDexVm())
-          .put("lang.annotation.Annotation.serialization.Annotation_serialization_A01", anyDexVm())
-          .put(
-              "lang.annotation.Annotation.annotationType.Annotation_annotationType_A01", anyDexVm())
-          .put(
-              "lang.annotation.IncompleteAnnotationException.serialization.IncompleteAnnotationException_serialization_A01",
-              anyDexVm())
-          .put("lang.annotation.Annotation.Class.Annotation_class_A02", any())
-          .put("lang.annotation.Retention.Retention_class_A01", anyDexVm())
-          .put(
-              "lang.annotation.AnnotationTypeMismatchException.Class.AnnotationTypeMismatchException_class_A01",
-              any())
-          .put("lang.Long.serialization.Long_serialization_A01", anyDexVm())
-          .put("lang.ThreadGroup.resume.ThreadGroup_resume_A01", anyDexVm())
-          .put(
-              "lang.AbstractMethodError.serialization.AbstractMethodError_serialization_A01",
-              anyDexVm())
-          .put("lang.RuntimeException.serialization.RuntimeException_serialization_A01", anyDexVm())
-          .put("lang.ThreadGroup.suspend.ThreadGroup_suspend_A01", anyDexVm())
-          .put(
-              "lang.ThreadGroup.ConstructorLjava_lang_ThreadGroupLjava_lang_String.ThreadGroup_Constructor_A03",
-              anyDexVm())
-          .put("lang.ThreadGroup.stop.ThreadGroup_stop_A01", anyDexVm())
-          .put("lang.ThreadGroup.enumerate_Thread.ThreadGroup_enumerate_A01", anyDexVm())
-          .put(
-              "lang.ThreadGroup.ConstructorLjava_lang_ThreadGroupLjava_lang_String.ThreadGroup_Constructor_A04",
-              anyDexVm())
-          .put(
-              "lang.ThreadGroup.parentOfLjava_lang_ThreadGroup.ThreadGroup_parentOf_A01",
-              anyDexVm())
-          .put("lang.ThreadGroup.getMaxPriority.ThreadGroup_getMaxPriority_A02", anyDexVm())
-          .put("lang.ThreadGroup.checkAccess.ThreadGroup_checkAccess_A03", anyDexVm())
-          .put("lang.ThreadGroup.enumerate_ThreadZ.ThreadGroup_enumerate_A01", anyDexVm())
-          .put(
-              "lang.ThreadGroup.uncaughtExceptionLjava_lang_ThreadLjava_lang_Throwable.ThreadGroup_uncaughtException_A01",
-              anyDexVm())
-          .put("lang.ThreadGroup.checkAccess.ThreadGroup_checkAccess_A02", anyDexVm())
-          .put(
-              "lang.ThreadGroup.ConstructorLjava_lang_String.ThreadGroup_Constructor_A04",
-              anyDexVm())
-          .put("lang.ThreadGroup.activeCount.ThreadGroup_activeCount_A01", anyDexVm())
-          .put("lang.ThreadGroup.setMaxPriorityI.ThreadGroup_setMaxPriority_A03", anyDexVm())
-          .put(
-              "lang.ThreadGroup.ConstructorLjava_lang_String.ThreadGroup_Constructor_A03",
-              anyDexVm())
-          .put("lang.ThreadGroup.getParent.ThreadGroup_getParent_A03", anyDexVm())
-          .put("lang.Class.getDeclaredConstructors.Class_getDeclaredConstructors_A02", any())
-          .put("lang.AssertionError.serialization.AssertionError_serialization_A01", anyDexVm())
-          .put("lang.Class.getClassLoader.Class_getClassLoader_A01", anyDexVm())
-          .put("lang.Class.getDeclaringClass.Class_getDeclaringClass_A01", anyDexVm())
-          .put(
-              "lang.Class.getDeclaredFields.Class_getDeclaredFields_A01",
-              match(artRuntimesFrom(Runtime.ART_V5_1_1)))
-          .put("lang.Class.getClassLoader.Class_getClassLoader_A02", anyDexVm())
-          .put("lang.Class.getClassLoader.Class_getClassLoader_A03", anyDexVm())
-          .put("lang.Class.getDeclaredFields.Class_getDeclaredFields_A02", any())
-          .put("lang.Class.getResourceLjava_lang_String.Class_getResource_A01", anyDexVm())
-          .put("lang.Class.getConstructor_Ljava_lang_Class.Class_getConstructor_A03", anyDexVm())
-          .put(
-              "lang.Class.forNameLjava_lang_StringZLjava_lang_ClassLoader.Class_forName_A03", any())
-          .put(
-              "lang.Class.forNameLjava_lang_StringZLjava_lang_ClassLoader.Class_forName_A07",
-              anyDexVm())
-          .put(
-              "lang.Class.forNameLjava_lang_StringZLjava_lang_ClassLoader.Class_forName_A01",
-              anyDexVm())
-          .put("lang.Class.getConstructor_Ljava_lang_Class.Class_getConstructor_A04", any())
-          .put("lang.Class.serialization.Class_serialization_A01", anyDexVm())
-          .put("lang.Class.getMethods.Class_getMethods_A02", any())
-          .put(
-              "lang.Class.getDeclaredMethodLjava_lang_String_Ljava_lang_Class.Class_getDeclaredMethod_A05",
-              any())
-          .put("lang.Class.getClasses.Class_getClasses_A02", any())
-          .put(
-              "lang.Class.getDeclaredMethodLjava_lang_String_Ljava_lang_Class.Class_getDeclaredMethod_A03",
-              anyDexVm())
-          .put(
-              "lang.Class.getClasses.Class_getClasses_A01",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V4_4_4,
-                      Runtime.ART_V4_0_4,
-                      Runtime.JAVA)))
-          .put("lang.Class.getProtectionDomain.Class_getProtectionDomain_A01", any())
-          .put("lang.Class.getProtectionDomain.Class_getProtectionDomain_A02", anyDexVm())
-          .put(
-              "lang.Class.getDeclaredMethods.Class_getDeclaredMethods_A01",
-              match(artRuntimesFromAndJava(Runtime.ART_V7_0_0)))
-          .put(
-              "lang.Class.getMethods.Class_getMethods_A01",
-              match(artRuntimesFromAndJava(Runtime.ART_V7_0_0)))
-          .put("lang.Class.getGenericInterfaces.Class_getGenericInterfaces_A04", any())
-          .put("lang.Class.getDeclaredFieldLjava_lang_String.Class_getDeclaredField_A04", any())
-          .put("lang.Class.getDeclaredMethods.Class_getDeclaredMethods_A02", any())
-          .put(
-              "lang.Class.getResourceAsStreamLjava_lang_String.Class_getResourceAsStream_A01",
-              anyDexVm())
-          .put("lang.Class.getGenericInterfaces.Class_getGenericInterfaces_A05", any())
-          .put("lang.Class.getAnnotationLjava_lang_Class.Class_getAnnotation_A01", any())
-          .put("lang.Class.getGenericInterfaces.Class_getGenericInterfaces_A03", any())
-          .put("lang.Class.getDeclaredClasses.Class_getDeclaredClasses_A02", any())
-          .put("lang.Class.desiredAssertionStatus.Class_desiredAssertionStatus_A01", anyDexVm())
-          .put("lang.Class.getPackage.Class_getPackage_A01", anyDexVm())
-          .put("lang.Class.getFieldLjava_lang_String.Class_getField_A04", any())
-          .put("lang.Class.getTypeParameters.Class_getTypeParameters_A02", any())
-          .put("lang.Class.getDeclaredAnnotations.Class_getDeclaredAnnotations_A01", any())
-          .put("lang.Class.getConstructors.Class_getConstructors_A02", any())
-          .put(
-              "lang.Class.isAnnotationPresentLjava_lang_Class.Class_isAnnotationPresent_A01", any())
-          .put("lang.Class.getFields.Class_getFields_A02", any())
-          .put("lang.Class.getGenericSuperclass.Class_getGenericSuperclass_A03", any())
-          .put("lang.Class.getGenericSuperclass.Class_getGenericSuperclass_A04", any())
-          .put("lang.Class.getSigners.Class_getSigners_A01", anyDexVm())
-          .put(
-              "lang.Class.getMethodLjava_lang_String_Ljava_lang_Class.Class_getMethod_A01",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT,
-                      Runtime.ART_V9_0_0,
-                      Runtime.ART_V8_1_0,
-                      Runtime.ART_V7_0_0,
-                      Runtime.ART_V4_4_4,
-                      Runtime.ART_V4_0_4)))
-          .put(
-              "lang.Class.getModifiers.Class_getModifiers_A03", match(runtimes(Runtime.ART_V4_0_4)))
-          .put("lang.Class.newInstance.Class_newInstance_A06", match(runtimes(Runtime.ART_V4_0_4)))
-          .put("lang.Class.getGenericSuperclass.Class_getGenericSuperclass_A01", any())
-          .put("lang.Class.getGenericSuperclass.Class_getGenericSuperclass_A02", any())
-          .put("lang.Class.newInstance.Class_newInstance_A07", any())
-          .put(
-              "lang.Class.getDeclaredConstructor_Ljava_lang_Class.Class_getDeclaredConstructor_A02",
-              anyDexVm())
-          .put("lang.Class.getMethodLjava_lang_String_Ljava_lang_Class.Class_getMethod_A05", any())
-          .put("lang.Class.forNameLjava_lang_String.Class_forName_A01", anyDexVm())
-          .put(
-              "lang.Class.getDeclaredConstructor_Ljava_lang_Class.Class_getDeclaredConstructor_A03",
-              any())
-          .put(
-              "lang.Class.getMethodLjava_lang_String_Ljava_lang_Class.Class_getMethod_A03",
-              anyDexVm())
-          .put("lang.Class.forNameLjava_lang_String.Class_forName_A02", any())
-          .put(
-              "lang.UnsatisfiedLinkError.serialization.UnsatisfiedLinkError_serialization_A01",
-              anyDexVm())
-          .put("lang.Class.getAnnotations.Class_getAnnotations_A01", any())
-          .put(
-              "lang.EnumConstantNotPresentException.serialization.EnumConstantNotPresentException_serialization_A01",
-              anyDexVm())
-          .put("lang.String.toLowerCase.String_toLowerCase_A01", any())
-          .put("lang.String.splitLjava_lang_StringI.String_split_A01", any())
-          .put("lang.String.serialization.String_serialization_A01", anyDexVm())
-          .put("lang.String.regionMatchesZILjava_lang_StringII.String_regionMatches_A01", any())
-          .put("lang.String.valueOfF.String_valueOf_A01", any())
-          .put("lang.String.Constructor_BLjava_nio_charset_Charset.String_Constructor_A01", any())
-          .put("lang.String.concatLjava_lang_String.String_concat_A01", anyDexVm())
-          .put("lang.String.matchesLjava_lang_String.String_matches_A01", anyDexVm())
-          .put(
-              "lang.String.CASE_INSENSITIVE_ORDER.serialization.String_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.String.getBytesLjava_lang_String.String_getBytes_A14",
-              match(artRuntimesUpTo(Runtime.ART_V7_0_0)))
-          .put("lang.String.splitLjava_lang_String.String_split_A01", any())
-          .put("lang.String.getBytesII_BI.String_getBytes_A03", anyDexVm())
-          .put("lang.String.getBytesII_BI.String_getBytes_A02", anyDexVm())
-          .put("lang.String.toLowerCaseLjava_util_Locale.String_toLowerCase_A01", any())
-          .put("lang.String.Constructor_BIILjava_nio_charset_Charset.String_Constructor_A01", any())
-          .put("lang.String.getBytesLjava_nio_charset_Charset.String_getBytes_A01", anyDexVm())
-          .put("lang.String.valueOfD.String_valueOf_A01", any())
-          .put(
-              "lang.String.getBytesLjava_nio_charset_Charset.String_getBytes_A14",
-              match(artRuntimesUpTo(Runtime.ART_V7_0_0)))
-          .put("lang.Package.isSealed.Package_isSealed_A01", anyDexVm())
-          .put(
-              "lang.Package.getSpecificationVersion.Package_getSpecificationVersion_A01",
-              anyDexVm())
-          .put("lang.Package.getAnnotationLjava_lang_Class.Package_getAnnotation_A01", any())
-          .put(
-              "lang.Package.isAnnotationPresentLjava_lang_Class.Package_isAnnotationPresent_A02",
-              match(and(runtimes(Runtime.ART_V4_0_4), artRuntimesFrom(Runtime.ART_V7_0_0))))
-          .put("lang.Package.getName.Package_getName_A01", anyDexVm())
-          .put(
-              "lang.Package.getImplementationVersion.Package_getImplementationVersion_A01",
-              anyDexVm())
-          .put("lang.Package.getDeclaredAnnotations.Package_getDeclaredAnnotations_A01", any())
-          .put("lang.Package.getSpecificationVendor.Package_getSpecificationVendor_A01", anyDexVm())
-          .put(
-              "lang.Package.getAnnotationLjava_lang_Class.Package_getAnnotation_A02",
-              match(and(artRuntimesFrom(Runtime.ART_V7_0_0), runtimes(Runtime.ART_V4_0_4))))
-          .put(
-              "lang.Package.isCompatibleWithLjava_lang_String.Package_isCompatibleWith_A01",
-              anyDexVm())
-          .put("lang.Package.toString.Package_toString_A01", anyDexVm())
-          .put("lang.Package.getAnnotations.Package_getAnnotations_A01", any())
-          .put(
-              "lang.Package.isAnnotationPresentLjava_lang_Class.Package_isAnnotationPresent_A01",
-              any())
-          .put("lang.Package.getSpecificationTitle.Package_getSpecificationTitle_A01", anyDexVm())
-          .put("lang.Package.getImplementationTitle.Package_getImplementationTitle_A01", anyDexVm())
-          .put("lang.Package.getPackages.Package_getPackages_A01", anyDexVm())
-          .put("lang.Package.hashCode.Package_hashCode_A01", anyDexVm())
-          .put("lang.Package.getPackageLjava_lang_String.Package_getPackage_A01", anyDexVm())
-          .put(
-              "lang.Package.getImplementationVendor.Package_getImplementationVendor_A01",
-              anyDexVm())
-          .put("lang.Package.isSealedLjava_net_URL.Package_isSealed_A01", anyDexVm())
-          .put("lang.StringBuilder.serialization.StringBuilder_serialization_A01", anyDexVm())
-          .put(
-              "lang.SecurityManager.checkReadLjava_io_FileDescriptor.SecurityManager_checkRead_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkAwtEventQueueAccess.SecurityManager_checkAwtEventQueueAccess_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkWriteLjava_lang_String.SecurityManager_checkWrite_A02",
-              anyDexVm())
-          .put("lang.SecurityManager.inClassLoader.SecurityManager_inClassLoader_A01", anyDexVm())
-          .put(
-              "lang.SecurityManager.checkPermissionLjava_security_PermissionLjava_lang_Object.SecurityManager_checkPermission_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkReadLjava_io_FileDescriptor.SecurityManager_checkRead_A01",
-              anyDexVm())
-          .put("lang.SecurityManager.inCheck.SecurityManager_inCheck_A01", anyDexVm())
-          .put(
-              "lang.SecurityManager.currentClassLoader.SecurityManager_currentClassLoader_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkPrintJobAccess.SecurityManager_checkPrintJobAccess_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkWriteLjava_lang_String.SecurityManager_checkWrite_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkPackageAccessLjava_lang_String.SecurityManager_checkPackageAccess_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkAcceptLjava_lang_StringI.SecurityManager_checkAccept_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkPermissionLjava_security_PermissionLjava_lang_Object.SecurityManager_checkPermission_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.currentClassLoader.SecurityManager_currentClassLoader_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkMulticastLjava_net_InetAddress.SecurityManager_checkMulticast_A02",
-              anyDexVm())
-          .put("lang.SecurityManager.checkListenI.SecurityManager_checkListen_A01", anyDexVm())
-          .put(
-              "lang.SecurityManager.getSecurityContext.SecurityManager_getSecurityContext_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkPackageAccessLjava_lang_String.SecurityManager_checkPackageAccess_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkMemberAccessLjava_lang_ClassI.SecurityManager_checkMemberAccess_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkMulticastLjava_net_InetAddressB.SecurityManager_checkMulticast_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkAcceptLjava_lang_StringI.SecurityManager_checkAccept_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkMulticastLjava_net_InetAddress.SecurityManager_checkMulticast_A01",
-              anyDexVm())
-          .put("lang.SecurityManager.Constructor.SecurityManager_Constructor_A01", anyDexVm())
-          .put(
-              "lang.SecurityManager.getClassContext.SecurityManager_getClassContext_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkMemberAccessLjava_lang_ClassI.SecurityManager_checkMemberAccess_A03",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkDeleteLjava_lang_String.SecurityManager_checkDelete_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkReadLjava_lang_StringLjava_lang_Object.SecurityManager_checkRead_A03",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkMulticastLjava_net_InetAddressB.SecurityManager_checkMulticast_A01",
-              anyDexVm())
-          .put("lang.SecurityManager.checkListenI.SecurityManager_checkListen_A02", any())
-          .put(
-              "lang.SecurityManager.checkAccessLjava_lang_Thread.SecurityManager_checkAccess_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkWriteLjava_io_FileDescriptor.SecurityManager_checkWrite_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkDeleteLjava_lang_String.SecurityManager_checkDelete_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkPropertiesAccess.SecurityManager_checkPropertiesAccess_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkReadLjava_lang_StringLjava_lang_Object.SecurityManager_checkRead_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkAccessLjava_lang_ThreadGroup.SecurityManager_checkAccess_A03",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkAccessLjava_lang_Thread.SecurityManager_checkAccess_A03",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkPackageDefinitionLjava_lang_String.SecurityManager_checkPackageDefinition_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkReadLjava_lang_String.SecurityManager_checkRead_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkWriteLjava_io_FileDescriptor.SecurityManager_checkWrite_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkReadLjava_lang_StringLjava_lang_Object.SecurityManager_checkRead_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkExecLjava_lang_String.SecurityManager_checkExec_A03",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkPackageDefinitionLjava_lang_String.SecurityManager_checkPackageDefinition_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkExecLjava_lang_String.SecurityManager_checkExec_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkCreateClassLoader.SecurityManager_checkCreateClassLoader_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkReadLjava_lang_String.SecurityManager_checkRead_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkAccessLjava_lang_ThreadGroup.SecurityManager_checkAccess_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.inClassLjava_lang_String.SecurityManager_inClass_A03",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkConnectLjava_lang_StringILjava_lang_Object.SecurityManager_checkConnect_A03",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkExecLjava_lang_String.SecurityManager_checkExec_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkSetFactory.SecurityManager_checkSetFactory_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkConnectLjava_lang_StringILjava_lang_Object.SecurityManager_checkConnect_A04",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkPermissionLjava_security_Permission.SecurityManager_checkPermission_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.inClassLjava_lang_String.SecurityManager_inClass_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.inClassLjava_lang_String.SecurityManager_inClass_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkPropertyAccessLjava_lang_String.SecurityManager_checkPropertyAccess_A02",
-              anyDexVm())
-          .put("lang.SecurityManager.checkExitI.SecurityManager_checkExit_A01", anyDexVm())
-          .put(
-              "lang.SecurityManager.checkConnectLjava_lang_StringILjava_lang_Object.SecurityManager_checkConnect_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkConnectLjava_lang_StringILjava_lang_Object.SecurityManager_checkConnect_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.classLoaderDepth.SecurityManager_classLoaderDepth_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.classDepthLjava_lang_String.SecurityManager_classDepth_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkPropertyAccessLjava_lang_String.SecurityManager_checkPropertyAccess_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkPropertyAccessLjava_lang_String.SecurityManager_checkPropertyAccess_A03",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkConnectLjava_lang_StringI.SecurityManager_checkConnect_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkLinkLjava_lang_String.SecurityManager_checkLink_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.classLoaderDepth.SecurityManager_classLoaderDepth_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkPermissionLjava_security_Permission.SecurityManager_checkPermission_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.currentLoadedClass.SecurityManager_currentLoadedClass_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkSecurityAccessLjava_lang_String.SecurityManager_checkSecurityAccess_A03",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkConnectLjava_lang_StringI.SecurityManager_checkConnect_A03",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkConnectLjava_lang_StringI.SecurityManager_checkConnect_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkTopLevelWindowLjava_lang_Object.SecurityManager_checkTopLevelWindow_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.currentLoadedClass.SecurityManager_currentLoadedClass_A02",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.classDepthLjava_lang_String.SecurityManager_classDepth_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkSecurityAccessLjava_lang_String.SecurityManager_checkSecurityAccess_A01",
-              anyDexVm())
-          .put("lang.Throwable.serialization.Throwable_serialization_A01", anyDexVm())
-          .put(
-              "lang.SecurityManager.checkTopLevelWindowLjava_lang_Object.SecurityManager_checkTopLevelWindow_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkLinkLjava_lang_String.SecurityManager_checkLink_A01",
-              anyDexVm())
-          .put("lang.Throwable.getStackTrace.Throwable_getStackTrace_A01", anyDexVm())
-          .put(
-              "lang.SecurityManager.checkSystemClipboardAccess.SecurityManager_checkSystemClipboardAccess_A01",
-              anyDexVm())
-          .put(
-              "lang.SecurityManager.checkSecurityAccessLjava_lang_String.SecurityManager_checkSecurityAccess_A02",
-              anyDexVm())
-          .put(
-              "lang.reflect.ReflectPermission.Constructor_java_lang_String.ReflectPermission_Constructor_A03",
-              anyDexVm())
-          .put(
-              "lang.reflect.MalformedParameterizedTypeException.serialization.MalformedParameterizedTypeException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.reflect.ReflectPermission.Constructor_java_lang_StringLjava_lang_String.ReflectPermission_Constructor_A02",
-              anyDexVm())
-          .put(
-              "lang.UnsupportedClassVersionError.serialization.UnsupportedClassVersionError_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.reflect.ReflectPermission.Constructor_java_lang_String.ReflectPermission_Constructor_A01",
-              any())
-          .put("lang.reflect.ReflectPermission.Class.ReflectPermission_class_A01", anyDexVm())
-          .put("lang.reflect.Proxy.serialization.Proxy_serialization_A01", any())
-          .put(
-              "lang.reflect.ReflectPermission.Constructor_java_lang_StringLjava_lang_String.ReflectPermission_Constructor_A03",
-              anyDexVm())
-          .put(
-              "lang.reflect.ReflectPermission.Constructor_java_lang_String.ReflectPermission_Constructor_A02",
-              anyDexVm())
-          .put("lang.reflect.ReflectPermission.Class.ReflectPermission_class_A02", anyDexVm())
-          .put(
-              "lang.reflect.ReflectPermission.Constructor_java_lang_StringLjava_lang_String.ReflectPermission_Constructor_A01",
-              any())
-          .put(
-              "lang.reflect.Proxy.getInvocationHandlerLjava_lang_Object.Proxy_getInvocationHandler_A02",
-              match(artRuntimesFromAndJava(Runtime.ART_V5_1_1)))
-          .put("lang.reflect.Proxy.Class.Proxy_class_A01", any())
-          .put(
-              "lang.reflect.Proxy.Class.Proxy_class_A02",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put(
-              "lang.reflect.Proxy.Class.Proxy_class_A03",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put(
-              "lang.reflect.Proxy.getProxyClassLjava_lang_ClassLoader_Ljava_lang_Class.Proxy_getProxyClass_A01",
-              anyDexVm())
-          .put(
-              "lang.reflect.Proxy.getProxyClassLjava_lang_ClassLoader_Ljava_lang_Class.Proxy_getProxyClass_A03",
-              anyDexVm())
-          .put(
-              "lang.reflect.Proxy.h.Proxy_h_A01",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT, Runtime.ART_V9_0_0, Runtime.ART_V8_1_0, Runtime.JAVA)))
-          .put("lang.reflect.Proxy.serialization.Proxy_serialization_A02", any())
-          .put(
-              "lang.reflect.GenericSignatureFormatError.serialization.GenericSignatureFormatError_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.reflect.Proxy.newProxyInstanceLjava_lang_ClassLoader_Ljava_lang_ClassLjava_lang_reflect_InvocationHandler.Proxy_newProxyInstance_A02",
-              anyDexVm())
-          .put(
-              "lang.reflect.Proxy.ConstructorLjava_lang_reflect_InvocationHandler.Proxy_Constructor_A01",
-              match(
-                  runtimes(
-                      Runtime.ART_DEFAULT, Runtime.ART_V9_0_0, Runtime.ART_V8_1_0, Runtime.JAVA)))
-          .put(
-              "lang.reflect.Proxy.newProxyInstanceLjava_lang_ClassLoader_Ljava_lang_ClassLjava_lang_reflect_InvocationHandler.Proxy_newProxyInstance_A01",
-              anyDexVm())
-          .put("lang.reflect.Modifier.isStrictI.Modifier_isStrict_A01", any())
-          .put("lang.reflect.Method.getGenericReturnType.Method_getGenericReturnType_A03", any())
-          .put("lang.reflect.Method.getGenericReturnType.Method_getGenericReturnType_A02", any())
-          .put("lang.reflect.Method.getAnnotationLjava_lang_Class.Method_getAnnotation_A01", any())
-          .put(
-              "lang.reflect.Method.getGenericExceptionTypes.Method_getGenericExceptionTypes_A02",
-              any())
-          .put("lang.reflect.Method.isBridge.Method_isBridge_A01", any())
-          .put("lang.reflect.Method.isSynthetic.Method_isSynthetic_A01", any())
-          .put("lang.reflect.Method.getGenericReturnType.Method_getGenericReturnType_A04", any())
-          .put(
-              "lang.reflect.Method.getGenericExceptionTypes.Method_getGenericExceptionTypes_A01",
-              any())
-          .put(
-              "lang.reflect.Method.invokeLjava_lang_Object_Ljava_lang_Object.Method_invoke_A07",
-              anyDexVm())
-          .put(
-              "lang.reflect.Method.getGenericExceptionTypes.Method_getGenericExceptionTypes_A04",
-              any())
-          .put("lang.reflect.Method.getTypeParameters.Method_getTypeParameters_A02", any())
-          .put(
-              "lang.reflect.Method.getGenericExceptionTypes.Method_getGenericExceptionTypes_A03",
-              any())
-          .put(
-              "lang.reflect.Method.getDeclaredAnnotations.Method_getDeclaredAnnotations_A01", any())
-          .put(
-              "lang.reflect.Method.getGenericParameterTypes.Method_getGenericParameterTypes_A04",
-              any())
-          .put("lang.reflect.Method.toGenericString.Method_toGenericString_A01", any())
-          .put(
-              "lang.reflect.Method.getGenericParameterTypes.Method_getGenericParameterTypes_A03",
-              any())
-          .put(
-              "lang.reflect.InvocationHandler.invokeLjava_lang_ObjectLjava_lang_reflect_Method_Ljava_lang_Object.InvocationHandler_invoke_A01",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put(
-              "lang.reflect.InvocationHandler.invokeLjava_lang_ObjectLjava_lang_reflect_Method_Ljava_lang_Object.InvocationHandler_invoke_A02",
-              anyDexVm())
-          .put("lang.reflect.Method.getDefaultValue.Method_getDefaultValue_A02", any())
-          .put(
-              "lang.reflect.Method.hashCode.Method_hashCode_A01",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put("lang.reflect.Method.toString.Method_toString_A01", any())
-          .put(
-              "lang.reflect.Method.getGenericParameterTypes.Method_getGenericParameterTypes_A02",
-              any())
-          .put("lang.reflect.Field.getFloatLjava_lang_Object.Field_getFloat_A05", anyDexVm())
-          .put("lang.reflect.Field.getDeclaringClass.Field_getDeclaringClass_A01", anyDexVm())
-          .put("lang.reflect.Field.getByteLjava_lang_Object.Field_getByte_A05", anyDexVm())
-          .put("lang.reflect.Field.getCharLjava_lang_Object.Field_getChar_A05", anyDexVm())
-          .put("lang.reflect.Field.getBooleanLjava_lang_Object.Field_getBoolean_A05", anyDexVm())
-          .put("lang.reflect.Field.setByteLjava_lang_ObjectB.Field_setByte_A05", anyDexVm())
-          .put("lang.reflect.Field.setByteLjava_lang_ObjectB.Field_setByte_A01", anyDexVm())
-          .put(
-              "lang.reflect.Field.setByteLjava_lang_ObjectB.Field_setByte_A02",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put("lang.reflect.Field.setBooleanLjava_lang_ObjectZ.Field_setBoolean_A01", anyDexVm())
-          .put(
-              "lang.reflect.Field.setBooleanLjava_lang_ObjectZ.Field_setBoolean_A02",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put("lang.reflect.Field.setCharLjava_lang_ObjectC.Field_setChar_A05", anyDexVm())
-          .put("lang.reflect.Field.isSynthetic.Field_isSynthetic_A01", any())
-          .put("lang.reflect.Field.setBooleanLjava_lang_ObjectZ.Field_setBoolean_A05", anyDexVm())
-          .put("lang.reflect.Field.getType.Field_getType_A01", anyDexVm())
-          .put("lang.reflect.Field.setCharLjava_lang_ObjectC.Field_setChar_A01", anyDexVm())
-          .put(
-              "lang.reflect.Field.setCharLjava_lang_ObjectC.Field_setChar_A02",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put("lang.reflect.Field.getDoubleLjava_lang_Object.Field_getDouble_A05", anyDexVm())
-          .put("lang.reflect.Field.setFloatLjava_lang_ObjectF.Field_setFloat_A01", anyDexVm())
-          .put(
-              "lang.reflect.Field.setFloatLjava_lang_ObjectF.Field_setFloat_A02",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put("lang.reflect.Field.getAnnotationLjava_lang_Class.Field_getAnnotation_A01", any())
-          .put(
-              "lang.reflect.Field.setIntLjava_lang_ObjectI.Field_setInt_A02",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put("lang.reflect.Field.getIntLjava_lang_Object.Field_getInt_A05", anyDexVm())
-          .put("lang.reflect.Field.setFloatLjava_lang_ObjectF.Field_setFloat_A05", anyDexVm())
-          .put("lang.reflect.Field.getShortLjava_lang_Object.Field_getShort_A05", anyDexVm())
-          .put("lang.reflect.Field.getGenericType.Field_getGenericType_A03", any())
-          .put("lang.reflect.Field.getDeclaredAnnotations.Field_getDeclaredAnnotations_A01", any())
-          .put("lang.reflect.Field.getGenericType.Field_getGenericType_A01", anyDexVm())
-          .put("lang.reflect.Field.setIntLjava_lang_ObjectI.Field_setInt_A05", anyDexVm())
-          .put("lang.reflect.Field.getGenericType.Field_getGenericType_A02", any())
-          .put("lang.reflect.Field.toGenericString.Field_toGenericString_A01", anyDexVm())
-          .put("lang.reflect.Field.getGenericType.Field_getGenericType_A04", any())
-          .put("lang.reflect.Field.setIntLjava_lang_ObjectI.Field_setInt_A01", anyDexVm())
-          .put(
-              "lang.reflect.Field.setDoubleLjava_lang_ObjectD.Field_setDouble_A02",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put("lang.reflect.Field.setDoubleLjava_lang_ObjectD.Field_setDouble_A05", anyDexVm())
-          .put("lang.reflect.Field.setShortLjava_lang_ObjectS.Field_setShort_A01", anyDexVm())
-          .put(
-              "lang.reflect.Field.setLongLjava_lang_ObjectJ.Field_setLong_A02",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put("lang.reflect.Field.setLongLjava_lang_ObjectJ.Field_setLong_A05", anyDexVm())
-          .put("lang.reflect.Field.setLongLjava_lang_ObjectJ.Field_setLong_A01", anyDexVm())
-          .put("lang.reflect.Field.setDoubleLjava_lang_ObjectD.Field_setDouble_A01", anyDexVm())
-          .put(
-              "lang.reflect.Field.setShortLjava_lang_ObjectS.Field_setShort_A02",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put("lang.reflect.Field.setShortLjava_lang_ObjectS.Field_setShort_A05", anyDexVm())
-          .put("lang.reflect.Field.getLjava_lang_Object.Field_get_A05", anyDexVm())
-          .put("lang.reflect.Field.getLongLjava_lang_Object.Field_getLong_A05", anyDexVm())
-          .put(
-              "lang.reflect.Field.setLjava_lang_ObjectLjava_lang_Object.Field_set_A02",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put("lang.reflect.Field.setLjava_lang_ObjectLjava_lang_Object.Field_set_A05", anyDexVm())
-          .put("lang.reflect.Field.setLjava_lang_ObjectLjava_lang_Object.Field_set_A01", anyDexVm())
-          .put(
-              "lang.reflect.Constructor.newInstance_Ljava_lang_Object.Constructor_newInstance_A06",
-              anyDexVm())
-          .put("lang.reflect.Constructor.isSynthetic.Constructor_isSynthetic_A01", any())
-          .put(
-              "lang.reflect.Constructor.getGenericExceptionTypes.Constructor_getGenericExceptionTypes_A03",
-              any())
-          .put(
-              "lang.reflect.Constructor.getGenericExceptionTypes.Constructor_getGenericExceptionTypes_A02",
-              any())
-          .put(
-              "lang.reflect.Constructor.getGenericExceptionTypes.Constructor_getGenericExceptionTypes_A01",
-              any())
-          .put(
-              "lang.reflect.Constructor.getAnnotationLjava_lang_Class.Constructor_getAnnotation_A01",
-              any())
-          .put(
-              "lang.reflect.Constructor.getDeclaredAnnotations.Constructor_getDeclaredAnnotations_A01",
-              any())
-          .put(
-              "lang.reflect.Constructor.getGenericExceptionTypes.Constructor_getGenericExceptionTypes_A04",
-              any())
-          .put(
-              "lang.reflect.InvocationTargetException.serialization.InvocationTargetException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.reflect.Constructor.toGenericString.Constructor_toGenericString_A01",
-              anyDexVm())
-          .put(
-              "lang.reflect.Constructor.getTypeParameters.Constructor_getTypeParameters_A02", any())
-          .put(
-              "lang.reflect.Constructor.getGenericParameterTypes.Constructor_getGenericParameterTypes_A03",
-              any())
-          .put(
-              "lang.reflect.Constructor.getGenericParameterTypes.Constructor_getGenericParameterTypes_A04",
-              any())
-          .put(
-              "lang.reflect.Constructor.getGenericParameterTypes.Constructor_getGenericParameterTypes_A02",
-              any())
-          .put(
-              "lang.reflect.AccessibleObject.setAccessibleZ.AccessibleObject_setAccessible_A03",
-              anyDexVm())
-          .put(
-              "lang.reflect.UndeclaredThrowableException.serialization.UndeclaredThrowableException_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.reflect.AccessibleObject.setAccessibleZ.AccessibleObject_setAccessible_A02",
-              anyDexVm())
-          .put(
-              "lang.reflect.AccessibleObject.setAccessible_Ljava_lang_reflect_AccessibleObjectZ.AccessibleObject_setAccessible_A03",
-              anyDexVm())
-          .put(
-              "lang.reflect.AccessibleObject.isAnnotationPresentLjava_lang_Class.AccessibleObject_isAnnotationPresent_A01",
-              any())
-          .put(
-              "lang.reflect.AccessibleObject.setAccessible_Ljava_lang_reflect_AccessibleObjectZ.AccessibleObject_setAccessible_A02",
-              anyDexVm())
-          .put(
-              "lang.reflect.AccessibleObject.getAnnotations.AccessibleObject_getAnnotations_A01",
-              any())
-          .put(
-              "lang.reflect.AccessibleObject.getDeclaredAnnotations.AccessibleObject_getDeclaredAnnotations_A01",
-              any())
-          .put(
-              "lang.reflect.AccessibleObject.getAnnotationLjava_lang_Class.AccessibleObject_getAnnotation_A01",
-              any())
-          .put(
-              "lang.IllegalAccessException.serialization.IllegalAccessException_serialization_A01",
-              anyDexVm())
-          .put("lang.Character.getTypeI.Character_getType_A01", any())
-          .put("lang.Character.isDigitI.Character_isDigit_A01", any())
-          .put("lang.Character.getTypeC.Character_getType_A01", any())
-          .put("lang.Character.serialization.Character_serialization_A01", anyDexVm())
-          .put("lang.Character.isDigitC.Character_isDigit_A01", any())
-          .put("lang.Character.digitCI.Character_digit_A01", any())
-          .put("lang.Character.digitII.Character_digit_A01", any())
-          .put("lang.Character.isLowerCaseC.Character_isLowerCase_A01", anyDexVm())
-          .put(
-              "lang.Character.isSpaceCharC.Character_isSpaceChar_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.Character.isSpaceCharI.Character_isSpaceChar_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.Character.isWhitespaceC.Character_isWhitespace_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.Character.isWhitespaceI.Character_isWhitespace_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put("lang.Character.getDirectionalityI.Character_getDirectionality_A01", any())
-          .put(
-              "lang.Character.UnicodeBlock.ofC.UnicodeBlock_of_A01",
-              match(artRuntimesFromAndJava(Runtime.ART_V4_4_4)))
-          .put(
-              "lang.Character.UnicodeBlock.ofI.UnicodeBlock_of_A01",
-              match(artRuntimesFromAndJava(Runtime.ART_V4_4_4)))
-          .put("lang.Character.isLowerCaseI.Character_isLowerCase_A01", anyDexVm())
-          .put("lang.Process.waitFor.Process_waitFor_A01", anyDexVm())
-          .put("lang.System.getProperties.System_getProperties_A01", anyDexVm())
-          .put("lang.Process.getErrorStream.Process_getErrorStream_A01", anyDexVm())
-          .put("lang.Character.getDirectionalityC.Character_getDirectionality_A01", any())
-          .put("lang.Process.exitValue.Process_exitValue_A01", anyDexVm())
-          .put("lang.System.loadLjava_lang_String.System_load_A01", anyDexVm())
-          .put("lang.Process.getInputStream.Process_getInputStream_A01", anyDexVm())
-          .put("lang.System.loadLibraryLjava_lang_String.System_loadLibrary_A01", anyDexVm())
-          .put(
-              "lang.System.setSecurityManagerLjava_lang_SecurityManager.System_setSecurityManager_A02",
-              anyDexVm())
-          .put("lang.System.runFinalizersOnExitZ.System_runFinalizersOnExit_A01", anyDexVm())
-          .put("lang.System.getenvLjava_lang_String.System_getenv_A01", anyDexVm())
-          .put("lang.System.getenv.System_getenv_A01", anyDexVm())
-          .put(
-              "lang.System.getPropertyLjava_lang_StringLjava_lang_String.System_getProperty_A01",
-              anyDexVm())
-          .put("lang.System.exitI.System_exit_A01", anyDexVm())
-          .put(
-              "util.concurrent.ArrayBlockingQueue.serialization.ArrayBlockingQueue_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.System.arraycopyLjava_lang_ObjectILjava_lang_ObjectII.System_arraycopy_A04",
-              anyDexVm())
-          .put(
-              "lang.System.setPropertiesLjava_util_Properties.System_setProperties_A02", anyDexVm())
-          .put("lang.System.clearPropertyLjava_lang_String.System_clearProperty_A02", anyDexVm())
-          .put("lang.System.getPropertyLjava_lang_String.System_getProperty_A01", anyDexVm())
-          .put(
-              "util.concurrent.LinkedBlockingQueue.serialization.LinkedBlockingQueue_serialization_A01",
-              anyDexVm())
-          .put(
-              "util.concurrent.LinkedBlockingDeque.serialization.LinkedBlockingDeque_serialization_A01",
-              anyDexVm())
-          .put(
-              "util.concurrent.ConcurrentLinkedQueue.serialization.ConcurrentLinkedQueue_serialization_A01",
-              anyDexVm())
-          .put(
-              "util.concurrent.SynchronousQueue.serialization.SynchronousQueue_serialization_A01",
-              anyDexVm())
-          .put(
-              "util.concurrent.CopyOnWriteArrayList.serialization.CopyOnWriteArrayList_serialization_A01",
-              anyDexVm())
-          .put(
-              "util.concurrent.CopyOnWriteArrayList.subListII.CopyOnWriteArrayList_subList_A01",
-              any())
-          .put(
-              "util.concurrent.ConcurrentHashMap.serialization.ConcurrentHashMap_serialization_A01",
-              match(artRuntimesFrom(Runtime.ART_V5_1_1)))
-          .put("util.concurrent.ConcurrentHashMap.keySet.ConcurrentHashMap_keySet_A01", anyDexVm())
-          .put(
-              "util.concurrent.Executors.privilegedThreadFactory.Executors_privilegedThreadFactory_A01",
-              any())
-          .put(
-              "util.concurrent.Executors.privilegedCallableLjava_util_concurrent_Callable.Executors_privilegedCallable_A01",
-              anyDexVm())
-          .put(
-              "util.concurrent.CopyOnWriteArraySet.serialization.CopyOnWriteArraySet_serialization_A01",
-              anyDexVm())
-          .put(
-              "util.concurrent.Executors.privilegedCallableUsingCurrentClassLoaderLjava_util_concurrent_Callable.Executors_privilegedCallableUsingCurrentClassLoader_A01",
-              anyDexVm())
-          .put(
-              "util.concurrent.PriorityBlockingQueue.ConstructorLjava_util_Collection.PriorityBlockingQueue_Constructor_A01",
-              any())
-          .put(
-              "util.concurrent.PriorityBlockingQueue.serialization.PriorityBlockingQueue_serialization_A01",
-              anyDexVm())
-          .put(
-              "lang.ThreadGroup.destroy.ThreadGroup_destroy_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put("lang.Thread.start.Thread_start_A01", match(runtimes(Runtime.ART_V7_0_0)))
-          .put(
-              "lang.String.getBytesLjava_lang_String.String_getBytes_A02",
-              match(artRuntimesUpTo(Runtime.ART_V7_0_0)))
-          .put(
-              "util.concurrent.CopyOnWriteArrayList.lastIndexOfLjava_lang_ObjectI.CopyOnWriteArrayList_lastIndexOf_A02",
-              match(artRuntimesUpTo(Runtime.ART_V7_0_0)))
-          .put(
-              "util.concurrent.CopyOnWriteArrayList.lastIndexOfLjava_lang_ObjectI.CopyOnWriteArrayList_lastIndexOf_A01",
-              match(artRuntimesUpTo(Runtime.ART_V7_0_0)))
-          .put(
-              "lang.StringBuffer.getCharsII_CI.StringBuffer_getChars_A03",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.StringBuffer.appendF.StringBuffer_append_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.StringBuffer.insertI_CII.StringBuffer_insert_A02",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.StrictMath.scalbDI.StrictMath_scalb_A03",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.StrictMath.scalbDI.StrictMath_scalb_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.StrictMath.scalbFI.StrictMath_scalb_A03",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.StrictMath.scalbFI.StrictMath_scalb_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_StringJ.Thread_Constructor_A07",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_String.Thread_Constructor_A07",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.Thread.toString.Thread_toString_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put("lang.Thread.start.Thread_start_A02", match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.Thread.setPriorityI.Thread_setPriority_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.ClassLoader.ConstructorLjava_lang_ClassLoader.ClassLoader_Constructor_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.Enum.compareToLjava_lang_Enum.Enum_compareTo_A03",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put("lang.Enum.hashCode.Enum_hashCode_A01", match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.StackTraceElement.hashCode.StackTraceElement_hashCode_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.ProcessBuilder.environment.ProcessBuilder_environment_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.ProcessBuilder.environment.ProcessBuilder_environment_A03",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.Float.toStringF.Float_toString_A04", match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.Float.toStringF.Float_toString_A03", match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.ThreadGroup.getMaxPriority.ThreadGroup_getMaxPriority_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.ThreadGroup.uncaughtExceptionLjava_lang_ThreadLjava_lang_Throwable.ThreadGroup_uncaughtException_A02",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.ThreadGroup.list.ThreadGroup_list_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.ThreadGroup.setMaxPriorityI.ThreadGroup_setMaxPriority_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.ThreadGroup.setMaxPriorityI.ThreadGroup_setMaxPriority_A04",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.ThreadGroup.toString.ThreadGroup_toString_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.Class.getFieldLjava_lang_String.Class_getField_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.String.replaceCC.String_replace_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.Package.isCompatibleWithLjava_lang_String.Package_isCompatibleWith_A02",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.StringBuilder.appendF.StringBuilder_append_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.StringBuilder.insertIF.StringBuilder_insert_A01",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.reflect.AccessibleObject.setAccessibleZ.AccessibleObject_setAccessible_A04",
-              match(artRuntimesUpToAndJava(Runtime.ART_V4_4_4)))
-          .put(
-              "lang.reflect.AccessibleObject.setAccessible_Ljava_lang_reflect_AccessibleObjectZ.AccessibleObject_setAccessible_A04",
-              match(artRuntimesUpToAndJava(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.Character.UnicodeBlock.forName_java_lang_String.UnicodeBlock_forName_A03",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put(
-              "lang.System.loadLjava_lang_String.System_load_A02",
-              match(artRuntimesUpTo(Runtime.ART_V6_0_1)))
-          .put("lang.Math.hypotDD.Math_hypot_A04", match(artRuntimesUpTo(Runtime.ART_V5_1_1)))
-          .put(
-              "math.BigInteger.probablePrimeIjava_util_Random.BigInteger_probablePrime_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put("lang.Math.sqrtD.Math_sqrt_A01", match(runtimes(Runtime.ART_V4_0_4)))
-          .put("lang.StrictMath.cbrtD.StrictMath_cbrt_A01", match(runtimes(Runtime.ART_V4_0_4)))
-          .put("lang.StrictMath.log10D.StrictMath_log10_A01", match(runtimes(Runtime.ART_V4_0_4)))
-          .put("lang.StrictMath.powDD.StrictMath_pow_A01", match(runtimes(Runtime.ART_V4_0_4)))
-          .put("lang.String.indexOfII.String_indexOf_A01", match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.String.indexOfLjava_lang_StringI.String_indexOf_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.getByteLjava_lang_ObjectI.Array_getByte_A03",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.getDoubleLjava_lang_ObjectI.Array_getDouble_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.getDoubleLjava_lang_ObjectI.Array_getDouble_A03",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.getFloatLjava_lang_ObjectI.Array_getFloat_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.getFloatLjava_lang_ObjectI.Array_getFloat_A03",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.getIntLjava_lang_ObjectI.Array_getInt_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.getIntLjava_lang_ObjectI.Array_getInt_A03",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.getLongLjava_lang_ObjectI.Array_getLong_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.getLongLjava_lang_ObjectI.Array_getLong_A03",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.getShortLjava_lang_ObjectI.Array_getShort_A03",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.setBooleanLjava_lang_ObjectIZ.Array_setBoolean_A03",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.setCharLjava_lang_ObjectIC.Array_setChar_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.setLjava_lang_ObjectILjava_lang_Object.Array_set_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Array.setLjava_lang_ObjectILjava_lang_Object.Array_set_A03",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "lang.reflect.Constructor.toString.Constructor_toString_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "math.BigInteger.modPowLjava_math_BigIntegerLjava_math_Integer.BigInteger_modPow_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "util.concurrent.LinkedBlockingDeque.drainToLjava_util_CollectionI.LinkedBlockingDeque_drainTo_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "util.concurrent.LinkedBlockingQueue.drainToLjava_util_CollectionI.LinkedBlockingQueue_drainTo_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A02", cf())
-          .put(
-              "lang.AssertionError.ConstructorLjava_lang_Object.AssertionError_Constructor_A01",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A13", cf())
-          .put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A01", cf())
-          .put("lang.Runtime.addShutdownHookLjava_lang_Thread.Runtime_addShutdownHook_A02", cf())
-          .put("lang.ThreadGroup.destroy.ThreadGroup_destroy_A04", cf())
-          .put("lang.ThreadGroup.setMaxPriorityI.ThreadGroup_setMaxPriority_A02", cf())
-          .put(
-              "lang.String.replaceFirstLjava_lang_StringLjava_lang_String.String_replaceFirst_A01",
-              cf())
-          .put(
-              "lang.String.replaceAllLjava_lang_StringLjava_lang_String.String_replaceAll_A01",
-              cf())
-          .put("lang.System.inheritedChannel.System_inheritedChannel_A01", cf())
-          // TODO(b/124842490): Failing with change to JDK 9 for the classfile backend.
-          .put("lang.Character.isSpaceCharC.Character_isSpaceChar_A01", cf())
-          .put("lang.Character.isSpaceCharI.Character_isSpaceChar_A01", cf())
-          .put("lang.Character.isWhitespaceI.Character_isWhitespace_A01", cf())
-          .put("lang.Class.getConstructors.Class_getConstructors_A01", cf())
-          .put("lang.Class.getPackage.Class_getPackage_A01", cf())
-          .put(
-              "lang.Class.getResourceAsStreamLjava_lang_String.Class_getResourceAsStream_A01", cf())
-          .put("lang.Class.getResourceLjava_lang_String.Class_getResource_A01", cf())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_StringLjava_nio_ByteBufferLjava_security_ProtectionDomain.ClassLoader_defineClass_A01",
-              cf())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BII.ClassLoader_defineClass_A01", cf())
-          .put(
-              "lang.ClassLoader.defineClassLjava_lang_String_BIILjava_security_ProtectionDomain.ClassLoader_defineClass_A01",
-              cf())
-          .put("lang.ClassLoader.defineClass_BII.ClassLoader_defineClass_A01", cf())
-          .put(
-              "lang.ClassLoader.definePackageLjava_lang_String6Ljava_net_URL.ClassLoader_definePackage_A03",
-              cf())
-          .put("lang.Package.getImplementationVersion.Package_getImplementationVersion_A01", cf())
-          .put(
-              "lang.SecurityManager.checkAwtEventQueueAccess.SecurityManager_checkAwtEventQueueAccess_A01",
-              cf())
-          .put(
-              "lang.SecurityManager.checkSystemClipboardAccess.SecurityManager_checkSystemClipboardAccess_A01",
-              cf())
-          .put(
-              "lang.SecurityManager.checkTopLevelWindowLjava_lang_Object.SecurityManager_checkTopLevelWindow_A01",
-              cf())
-          .put("lang.StrictMath.toDegreesD.StrictMath_toDegrees_A01", cf())
-          .put("lang.StrictMath.toRadiansD.StrictMath_toRadians_A01", cf())
-          .put("lang.String.matchesLjava_lang_String.String_matches_A01", cf())
-          .put("lang.StringBuffer.append_CII.StringBuffer_append_A03", cf())
-          .put("lang.System.getProperties.System_getProperties_A02", cf())
-          .put("lang.System.getPropertyLjava_lang_String.System_getProperty_A02", cf())
-          .put(
-              "lang.System.getPropertyLjava_lang_StringLjava_lang_String.System_getProperty_A02",
-              cf())
-          .put("lang.Throwable.serialization.Throwable_serialization_A01", cf())
-          .put("lang.ref.ReferenceQueue.poll.ReferenceQueue_poll_A01", cf())
-          .put("lang.ref.ReferenceQueue.remove.ReferenceQueue_remove_A01", cf())
-          .put("lang.ref.ReferenceQueue.removeJ.ReferenceQueue_remove_A01", cf())
-          .put("lang.reflect.Constructor.toGenericString.Constructor_toGenericString_A01", cf())
-          .put("lang.reflect.Field.getGenericType.Field_getGenericType_A01", cf())
-          .put("lang.reflect.Field.toGenericString.Field_toGenericString_A01", cf())
-          .build(); // end of failuresToTriage
-
-  public static final Multimap<String, TestCondition> bugs =
-      new ImmutableListMultimap.Builder<String, TestCondition>()
-          // The following StringBuffer/StringBuilder tests fails because we remove, e.g.,
-          // new StringBuffer(-5) if it is dead code (but it should trow), see b/133745205
-          .put(
-              "lang.StringBuffer.ConstructorLjava_lang_String.StringBuffer_Constructor_A02",
-              match(R8DEX_COMPILER))
-          .put(
-              "lang.StringBuffer.ConstructorLjava_lang_CharSequence.StringBuffer_Constructor_A02",
-              match(R8DEX_COMPILER))
-          .put("lang.StringBuffer.ConstructorI.StringBuffer_Constructor_A02", match(R8DEX_COMPILER))
-          .put(
-              "lang.StringBuilder.ConstructorI.StringBuilder_Constructor_A02",
-              match(R8DEX_COMPILER))
-          .put(
-              "lang.StringBuilder.ConstructorLjava_lang_CharSequence.StringBuilder_Constructor_A02",
-              match(R8DEX_COMPILER))
-          .put(
-              "lang.StringBuilder.ConstructorLjava_lang_String.StringBuilder_Constructor_A02",
-              match(R8DEX_COMPILER))
-          .build();
-
-  public static final Multimap<String, TestCondition> flakyWhenRun =
-      new ImmutableListMultimap.Builder<String, TestCondition>()
-          .put("lang.Object.notifyAll.Object_notifyAll_A03", anyDexVm())
-          .put("lang.Object.notify.Object_notify_A03", anyDexVm())
-          .put(
-              "util.concurrent.ConcurrentSkipListSet.addLjava_lang_Object.ConcurrentSkipListSet_add_A01",
-              any())
-          .put("util.concurrent.SynchronousQueue.ConstructorZ", anyDexVm())
-          .put("lang.Thread.interrupt.Thread_interrupt_A04", anyDexVm())
-          .put(
-              "util.concurrent.SynchronousQueue.ConstructorZ.SynchronousQueue_Constructor_A01",
-              anyDexVm())
-          .put("lang.Thread.getState.Thread_getState_A01", anyDexVm())
-          .put("lang.Thread.join.Thread_join_A01", anyDexVm())
-          .put("lang.ThreadGroup.destroy.ThreadGroup_destroy_A01", match(JAVA_RUNTIME))
-          .put(
-              "util.concurrent.ScheduledThreadPoolExecutor.getTaskCount.ScheduledThreadPoolExecutor_getTaskCount_A01",
-              any())
-          .put(
-              "lang.ref.PhantomReference.clear.PhantomReference_clear_A01",
-              match(artRuntimesUpToAndJava(Runtime.ART_V4_4_4)))
-          .put(
-              "lang.ref.SoftReference.clear.SoftReference_clear_A01",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put(
-              "lang.ref.WeakReference.clear.WeakReference_clear_A01",
-              match(and(artRuntimesUpTo(Runtime.ART_V4_4_4), JAVA_RUNTIME)))
-          .put(
-              "lang.ref.PhantomReference.isEnqueued.PhantomReference_isEnqueued_A01",
-              match(
-                  and(
-                      runtimes(Runtime.ART_V9_0_0, Runtime.ART_V8_1_0),
-                      artRuntimesUpTo(Runtime.ART_V4_4_4),
-                      JAVA_RUNTIME)))
-          .put("lang.ref.WeakReference.isEnqueued.WeakReference_isEnqueued_A01", any())
-          .put(
-              "lang.ref.WeakReference.enqueue.WeakReference_enqueue_A01",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put(
-              "lang.ref.SoftReference.isEnqueued.SoftReference_isEnqueued_A01",
-              match(
-                  and(
-                      runtimes(Runtime.ART_V9_0_0, Runtime.ART_V8_1_0),
-                      artRuntimesUpTo(Runtime.ART_V4_4_4),
-                      JAVA_RUNTIME)))
-          .put(
-              "lang.ref.SoftReference.enqueue.SoftReference_enqueue_A01",
-              match(and(artRuntimesUpTo(Runtime.ART_V4_4_4), JAVA_RUNTIME)))
-          .put(
-              "lang.ref.ReferenceQueue.poll.ReferenceQueue_poll_A01",
-              match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
-          .put("lang.Runtime.gc.Runtime_gc_A01", cf())
-          .put("lang.Runtime.runFinalizersOnExitZ.Runtime_runFinalizersOnExit_A01", cf())
-          .put(
-              "util.concurrent.AbstractExecutorService.invokeAllLjava_util_CollectionJLjava_util_concurrent_TimeUnit.AbstractExecutorService_invokeAll_A06",
-              match(runtimes(Runtime.ART_V4_0_4)))
-          .put(
-              "util.concurrent.Executors.newCachedThreadPoolLjava_util_concurrent_ThreadFactory.Executors_newCachedThreadPool_A01",
-              anyDexVm())
-          .put(
-              "util.concurrent.Executors.newCachedThreadPool.Executors_newCachedThreadPool_A01",
-              match(runtimes(Runtime.ART_V5_1_1)))
-          .put("lang.ref.SoftReference.get.SoftReference_get_A01", cf())
-          .put("lang.ref.WeakReference.get.WeakReference_get_A01", cf())
-          .build(); // end of flakyWhenRun
-
-  public static final Set<String> hasMissingClasses =
-      ImmutableSet.of(
-          "lang.RuntimePermission.Class.RuntimePermission_class_A01",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A03",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A04",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A05",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A06",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A07",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A08",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A09",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A11",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A12",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A14",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A15",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A19",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A20",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A21",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A22",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A24",
-          "lang.RuntimePermission.Class.RuntimePermission_class_A25",
-          "lang.reflect.Proxy.serialization.Proxy_serialization_A02");
-
-  public static final Multimap<String, TestCondition> timeoutsWhenRun =
-      new ImmutableListMultimap.Builder<String, TestCondition>()
-          .put("lang.Thread.interrupt.Thread_interrupt_A01", anyDexVm())
-          .put("lang.Thread.resume.Thread_resume_A01", anyDexVm())
-          .put("lang.Thread.stop.Thread_stop_A01", anyDexVm())
-          .put("lang.Thread.suspend.Thread_suspend_A01", anyDexVm())
-          .put(
-              "lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_StringJ.Thread_Constructor_A04",
-              anyDexVm())
-          .put(
-              "lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_StringJ.Thread_Constructor_A03",
-              anyDexVm())
-          .put(
-              "lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_StringJ.Thread_Constructor_A05",
-              anyDexVm())
-          .put("lang.Thread.setNameLjava_lang_String.Thread_setName_A02", anyDexVm())
-          .put("lang.Thread.stop.Thread_stop_A02", anyDexVm())
-          .put(
-              "lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_String.Thread_Constructor_A02",
-              anyDexVm())
-          .put(
-              "lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_String.Thread_Constructor_A03",
-              anyDexVm())
-          .put("lang.Thread.getStackTrace.Thread_getStackTrace_A03", anyDexVm())
-          .put(
-              "lang.Thread.setDefaultUncaughtExceptionHandler.Thread_setDefaultUncaughtExceptionHandler_A02",
-              anyDexVm())
-          .put("lang.Thread.checkAccess.Thread_checkAccess_A01", anyDexVm())
-          .put(
-              "lang.Thread.ConstructorLjava_lang_ThreadGroupLjava_lang_RunnableLjava_lang_String.Thread_Constructor_A04",
-              anyDexVm())
-          .put(
-              "lang.Thread.setUncaughtExceptionHandler.Thread_setUncaughtExceptionHandler_A02",
-              anyDexVm())
-          .put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A01", anyDexVm())
-          .put("lang.Thread.getAllStackTraces.Thread_getAllStackTraces_A02", anyDexVm())
-          .put(
-              "lang.Thread.setContextClassLoaderLjava_lang_ClassLoader.Thread_setContextClassLoader_A02",
-              anyDexVm())
-          .put("lang.Thread.setPriorityI.Thread_setPriority_A02", anyDexVm())
-          .put("lang.Thread.stopLjava_lang_Throwable.Thread_stop_A02", anyDexVm())
-          .put(
-              "lang.Runtime.execLjava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A04",
-              anyDexVm())
-          .put("lang.Thread.getContextClassLoader.Thread_getContextClassLoader_A02", anyDexVm())
-          .put("lang.ThreadGroup.suspend.ThreadGroup_suspend_A01", cf())
-          .put("lang.ThreadGroup.suspend.ThreadGroup_suspend_A02", anyDexVm())
-          .put("lang.Thread.setDaemonZ.Thread_setDaemon_A03", anyDexVm())
-          .put("lang.ProcessBuilder.environment.ProcessBuilder_environment_A07", anyDexVm())
-          .put(
-              "lang.Runtime.exec_Ljava_lang_String_Ljava_lang_StringLjava_io_File.Runtime_exec_A04",
-              anyDexVm())
-          .put("lang.Runtime.execLjava_lang_String_Ljava_lang_String.Runtime_exec_A04", anyDexVm())
-          .put("lang.Runtime.exec_Ljava_lang_String.Runtime_exec_A04", anyDexVm())
-          .put("lang.Runtime.execLjava_lang_String.Runtime_exec_A04", anyDexVm())
-          .put("lang.System.clearPropertyLjava_lang_String.System_clearProperty_A03", anyDexVm())
-          .put("lang.System.getSecurityManager.System_getSecurityManager_A01", anyDexVm())
-          .put("lang.System.setInLjava_io_InputStream.System_setIn_A02", anyDexVm())
-          .put("lang.System.setOutLjava_io_PrintStream.System_setOut_A02", anyDexVm())
-          .put("lang.ThreadGroup.destroy.ThreadGroup_destroy_A04", anyDexVm())
-          .put("lang.ThreadGroup.enumerate_ThreadGroupZ.ThreadGroup_enumerate_A03", anyDexVm())
-          .put("lang.ThreadGroup.enumerate_Thread.ThreadGroup_enumerate_A03", anyDexVm())
-          .put("lang.ThreadGroup.enumerate_ThreadZ.ThreadGroup_enumerate_A03", anyDexVm())
-          .put("lang.ThreadGroup.interrupt.ThreadGroup_interrupt_A02", anyDexVm())
-          .put("lang.ThreadGroup.resume.ThreadGroup_resume_A02", anyDexVm())
-          .put("lang.ThreadGroup.setMaxPriorityI.ThreadGroup_setMaxPriority_A02", anyDexVm())
-          .put("lang.Runtime.exec_Ljava_lang_String_Ljava_lang_String.Runtime_exec_A04", anyDexVm())
-          .put("lang.System.getenvLjava_lang_String.System_getenv_A03", anyDexVm())
-          .put(
-              "lang.System.setPropertyLjava_lang_StringLjava_lang_String.System_setProperty_A02",
-              anyDexVm())
-          .put("lang.ThreadGroup.enumerate_ThreadGroup.ThreadGroup_enumerate_A03", anyDexVm())
-          .put("lang.ThreadGroup.getParent.ThreadGroup_getParent_A02", anyDexVm())
-          .put("lang.ThreadGroup.setDaemonZ.ThreadGroup_setDaemon_A02", anyDexVm())
-          .put("lang.ThreadGroup.stop.ThreadGroup_stop_A02", any())
-          .put("lang.Class.getSuperclass.Class_getSuperclass_A01", anyDexVm())
-          .put("lang.System.getenv.System_getenv_A03", anyDexVm())
-          .put("lang.System.inheritedChannel.System_inheritedChannel_A01", anyDexVm())
-          .put(
-              "util.concurrent.ArrayBlockingQueue.containsLjava_lang_Object.ArrayBlockingQueue_contains_A01",
-              anyDexVm())
-          .put(
-              "lang.System.arraycopyLjava_lang_ObjectILjava_lang_ObjectII.System_arraycopy_A03",
-              anyDexVm())
-          .put("lang.System.setErrLjava_io_PrintStream.System_setErr_A02", anyDexVm())
-          .put(
-              "util.concurrent.ArrayBlockingQueue.containsLjava_lang_Object.ArrayBlockingQueue_contains_A01",
-              anyDexVm())
-          .put(
-              "lang.System.setSecurityManagerLjava_lang_SecurityManager.System_setSecurityManager_A01",
-              anyDexVm())
-          .put(
-              "util.concurrent.ArrayBlockingQueue.containsLjava_lang_Object.ArrayBlockingQueue_contains_A01",
-              anyDexVm())
-          .put(
-              "util.concurrent.ArrayBlockingQueue.containsLjava_lang_Object.ArrayBlockingQueue_contains_A01",
-              anyDexVm())
-          .put(
-              "lang.System.setPropertiesLjava_util_Properties.System_setProperties_A01", anyDexVm())
-          .put(
-              "util.concurrent.CopyOnWriteArrayList.ConstructorLjava_util_Collection.CopyOnWriteArrayList_Constructor_A02",
-              anyDexVm())
-          .put("util.concurrent.CyclicBarrier.reset.CyclicBarrier_reset_A03", any())
-          .put("lang.System.clearPropertyLjava_lang_String.System_clearProperty_A01", anyDexVm())
-          .put("lang.System.getenv.System_getenv_A04", anyDexVm())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A02", anyDexVm())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A13", anyDexVm())
-          .build(); // end of timeoutsWhenRun
-
-  public static final Multimap<String, TestCondition> requiresInliningDisabled =
-      new ImmutableListMultimap.Builder<String, TestCondition>()
-          .put("lang.Throwable.printStackTrace.Throwable_printStackTrace_A01", match(R8_COMPILER))
-          .put("lang.Throwable.printStackTraceLjava_io_PrintWriter.Throwable_printStackTrace_A01",
-              match(R8_COMPILER))
-          .put("lang.Throwable.printStackTraceLjava_io_PrintStream.Throwable_printStackTrace_A01",
-              match(R8_COMPILER))
-          .put("lang.ref.SoftReference.isEnqueued.SoftReference_isEnqueued_A01", match(R8_COMPILER))
-          .put("lang.ref.WeakReference.isEnqueued.WeakReference_isEnqueued_A01", match(R8_COMPILER))
-          .put("lang.StackTraceElement.getMethodName.StackTraceElement_getMethodName_A01",
-              match(R8_COMPILER))
-          .put("lang.Thread.dumpStack.Thread_dumpStack_A01", match(R8_COMPILER))
-          .build();
-
-  public static final Set<String> compilationFailsWithAsmMethodTooLarge = ImmutableSet.of();
-
-  private static boolean testMatch(
-      Multimap<String, TestCondition> testConditions,
-      String name,
-      CompilerUnderTest compilerUnderTest,
-      Runtime runtime,
-      CompilationMode compilationMode) {
-    Collection<TestCondition> entries = testConditions.get(name);
-    for (TestCondition entry : entries) {
-      if (entry.test(DexTool.NONE, compilerUnderTest, runtime, compilationMode)) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  public static <T> T getExpectedOutcome(
-      String name,
-      CompilerUnderTest compilerUnderTest,
-      Runtime runtime,
-      CompilationMode compilationMode,
-      BiFunction<Outcome, Boolean, T> consumer) {
-
-    Outcome outcome = null;
-
-    if (testMatch(failuresToTriage, name, compilerUnderTest, runtime, compilationMode)) {
-      outcome = Outcome.FAILS_WHEN_RUN;
-    }
-    if (testMatch(bugs, name, compilerUnderTest, runtime, compilationMode)) {
-      outcome = Outcome.FAILS_WHEN_RUN;
-    }
-    if (testMatch(timeoutsWhenRun, name, compilerUnderTest, runtime, compilationMode)) {
-      assert outcome == null;
-      outcome = Outcome.TIMEOUTS_WHEN_RUN;
-    }
-    if (testMatch(flakyWhenRun, name, compilerUnderTest, runtime, compilationMode)) {
-      assert outcome == null;
-      outcome = Outcome.FLAKY_WHEN_RUN;
-    }
-    if (outcome == null) {
-      outcome = Outcome.PASSES;
-    }
-    boolean disableInlining =
-        testMatch(requiresInliningDisabled, name, compilerUnderTest, runtime, compilationMode);
-    return consumer.apply(outcome, disableInlining);
-  }
-}
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index 352e12b..c860721 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -6,11 +6,8 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
-import com.android.tools.r8.JctfTestSpecifications.Outcome;
 import com.android.tools.r8.TestCondition.Runtime;
 import com.android.tools.r8.TestCondition.RuntimeSet;
-import com.android.tools.r8.TestRuntime.CfVm;
-import com.android.tools.r8.TestRuntime.DexRuntime;
 import com.android.tools.r8.ToolHelper.ArtCommandBuilder;
 import com.android.tools.r8.ToolHelper.DexVm;
 import com.android.tools.r8.ToolHelper.DexVm.Kind;
@@ -36,14 +33,12 @@
 import com.google.common.collect.ObjectArrays;
 import com.google.common.collect.Sets;
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -53,7 +48,6 @@
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.ExecutionException;
-import java.util.function.BiFunction;
 import java.util.function.Consumer;
 import java.util.jar.JarEntry;
 import java.util.jar.JarOutputStream;
@@ -110,13 +104,6 @@
           DexVm.Version.V12_0_0,
           DexVm.Version.V13_MASTER);
 
-  // Input jar for jctf tests.
-  private static final String JCTF_COMMON_JAR = "build/libs/jctfCommon.jar";
-
-  // Parent dir for on-the-fly compiled jctf dex output.
-  private static final String JCTF_TESTS_PREFIX = "build/classes/java/jctfTests";
-  private static final String JCTF_TESTS_LIB_PREFIX =
-      JCTF_TESTS_PREFIX + "/com/google/jctf/test/lib";
   private static final String JUNIT_TEST_RUNNER = "org.junit.runner.JUnitCore";
   private static final String JUNIT_JAR = "third_party/junit/junit-4.13-beta-2.jar";
   private static final String HAMCREST_JAR =
@@ -1097,27 +1084,6 @@
       "663-odd-dex-size4" // No input class files
   );
 
-  // Some JCTF test cases require test classes from other tests. These are listed here.
-  private static final Map<String, List<String>> jctfTestsExternalClassFiles =
-      new ImmutableMap.Builder<String, List<String>>()
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A13",
-              new ImmutableList.Builder<String>()
-                  .add("lang/Thread/stop/Thread_stop_A02.class")
-                  .add("lang/Thread/stopLjava_lang_Throwable/Thread_stop_A02.class")
-                  .build())
-          .put("lang.RuntimePermission.Class.RuntimePermission_class_A02",
-              new ImmutableList.Builder<String>()
-                  .add("lang/Class/getClassLoader/Class_getClassLoader_A03.class")
-                  .add("lang/ClassLoader/getParent/ClassLoader_getParent_A02.class")
-                  .add("lang/Thread/getContextClassLoader/Thread_getContextClassLoader_A02.class")
-                  .add("lang/Runtime/exitI/Runtime_exit_A02.class")
-                  .build())
-          .put("lang.Runtime.exitI.Runtime_exit_A03",
-              new ImmutableList.Builder<String>()
-                  .add("lang/Runtime/exitI/Runtime_exit_A02.class")
-                  .build())
-          .build();
-
   // Tests to skip on some conditions
   private static final Multimap<String, TestCondition> testToSkip =
       new ImmutableListMultimap.Builder<String, TestCondition>()
@@ -1346,65 +1312,6 @@
       this.configuration = configuration;
     }
 
-    TestSpecification(
-        String name,
-        DexTool dexTool,
-        File directory,
-        boolean skipRun,
-        boolean failsOnRun,
-        boolean disableInlining,
-        boolean hasMissingClasses,
-        DexVm dexVm) {
-      this(
-          name,
-          dexTool,
-          directory,
-          skipRun,
-          ToolHelper.isWindows() && dexVm.getKind() == Kind.HOST,
-          false,
-          failsOnRun,
-          false,
-          false,
-          null,
-          false,
-          false,
-          disableInlining,
-          true, // Disable class inlining for JCTF tests.
-          hasMissingClasses,
-          true, // Disable desugaring for JCTF tests.
-          ImmutableList.of(),
-          null);
-    }
-
-    TestSpecification(
-        String name,
-        DexTool dexTool,
-        File directory,
-        boolean skipRun,
-        boolean failsOnRun,
-        boolean disableInlining,
-        boolean hasMissingClasses) {
-      this(
-          name,
-          dexTool,
-          directory,
-          skipRun,
-          false,
-          false,
-          failsOnRun,
-          false,
-          false,
-          null,
-          false,
-          false,
-          disableInlining,
-          true, // Disable class inlining for JCTF tests.
-          hasMissingClasses,
-          true, // Disable desugaring for JCTF tests.
-          ImmutableList.of(),
-          null);
-    }
-
     public File resolveFile(String name) {
       return directory.toPath().resolve(name).toFile();
     }
@@ -1874,75 +1781,6 @@
   }
 
 
-  private ArrayList<File> getJctfTestAuxClassFiles(File classFile) {
-    // Collect additional files from the same directory with file names like
-    // <dir>/<filename_wo_ext>$*.class and <dir>/<filename_wo_ext>_*.class
-    String classFileString = classFile.toString();
-    assert classFileString.endsWith(".class");
-
-    String auxClassFileBase =
-        new File(
-            classFileString.substring(0, classFileString.length() - ".class".length()))
-            .getName();
-
-    ArrayList<File> auxClassFiles = new ArrayList<>();
-
-    File[] files = classFile.getParentFile()
-        .listFiles(
-            (File file) -> isAuxClassFile(file.getName(), auxClassFileBase));
-    if (files != null) {
-      auxClassFiles.addAll(Arrays.asList(files));
-    }
-
-    if (auxClassFileBase.matches(".*[A-Z]\\d\\d")) {
-      // Also collect all the files in this directory that doesn't match this pattern
-      // They will be helper classes defined in one of the test class files but we don't know in
-      // which one, so we just add them to all tests.
-      final int SUFFIX_LENGTH_TO_STRIP = 3; // one letter (usually 'A' and two digits)
-      String testClassFilePattern =
-          auxClassFileBase.substring(0, auxClassFileBase.length() - SUFFIX_LENGTH_TO_STRIP)
-              + "[A-Z]\\d\\d.*\\.class";
-      files = classFile.getParentFile()
-          .listFiles(
-              (File file) -> file.getName().matches(".*\\.class") && !file.getName()
-                  .matches(testClassFilePattern));
-      if (files != null) {
-        auxClassFiles.addAll(Arrays.asList(files));
-      }
-    }
-
-    return auxClassFiles;
-  }
-
-  private static BiFunction<Outcome, Boolean, TestSpecification> jctfOutcomeToSpecification(
-      String name, DexTool dexTool, File resultDir, DexVm dexVm) {
-    return (outcome, noInlining) ->
-        new TestSpecification(
-            name,
-            dexTool,
-            resultDir,
-            outcome == JctfTestSpecifications.Outcome.TIMEOUTS_WHEN_RUN
-                || outcome == JctfTestSpecifications.Outcome.FLAKY_WHEN_RUN,
-            outcome == JctfTestSpecifications.Outcome.FAILS_WHEN_RUN,
-            noInlining,
-            JctfTestSpecifications.hasMissingClasses.contains(name),
-            dexVm);
-  }
-
-  private static BiFunction<Outcome, Boolean, TestSpecification> jctfOutcomeToSpecificationJava(
-      String name, File resultDir) {
-    return (outcome, noInlining) ->
-        new TestSpecification(
-            name,
-            DexTool.NONE,
-            resultDir,
-            outcome == JctfTestSpecifications.Outcome.TIMEOUTS_WHEN_RUN
-                || outcome == JctfTestSpecifications.Outcome.FLAKY_WHEN_RUN,
-            outcome == JctfTestSpecifications.Outcome.FAILS_WHEN_RUN,
-            noInlining,
-            JctfTestSpecifications.hasMissingClasses.contains(name));
-  }
-
   private static Runtime getRuntime(TestRuntime vm) {
     if (vm.isCf()) {
       return Runtime.JAVA;
@@ -1998,321 +1836,6 @@
     }
   }
 
-  protected void runJctfTest(
-      CompilerUnderTest compilerUnderTest, String classFilePath, String fullClassName)
-      throws IOException, CompilationFailedException {
-    VmErrors vmErrors = runJctfTestCore(compilerUnderTest, classFilePath, fullClassName);
-    if (vmErrors.message != null) {
-      throw new RuntimeException(vmErrors.message.toString());
-    }
-  }
-
-  private VmErrors runJctfTestCore(
-      CompilerUnderTest compilerUnderTest, String classFilePath, String fullClassName)
-      throws IOException, CompilationFailedException {
-    VmErrors vmErrors = new VmErrors();
-    List<TestRuntime> vms = new ArrayList<>();
-    if (compilerUnderTest == CompilerUnderTest.R8CF) {
-      // TODO(b/135411839): Run on all java runtimes.
-      vms.add(TestRuntime.getDefaultJavaRuntime());
-    } else {
-      for (DexVm vm : TestParametersBuilder.getAvailableDexVms()) {
-        // TODO(144966342): Disabled for triaging failures
-        if (vm.getVersion() == DexVm.Version.V10_0_0) {
-          System.out.println("Running on 10.0.0 is disabled, see b/144966342");
-          continue;
-        }
-        if (vm.getVersion() == DexVm.Version.V12_0_0
-            || vm.getVersion() == DexVm.Version.V13_MASTER) {
-          System.out.println("Running on 12.0.0 or V13_MASTER is disabled, see b/197078995");
-          continue;
-        }
-        vms.add(new DexRuntime(vm));
-      }
-    }
-
-    CompilerUnderTest firstCompilerUnderTest =
-        compilerUnderTest == CompilerUnderTest.R8_AFTER_D8
-            ? CompilerUnderTest.D8
-            : compilerUnderTest;
-    CompilationMode compilationMode = defaultCompilationMode(compilerUnderTest);
-
-    List<VmSpec> vmSpecs = new ArrayList<>();
-    for (TestRuntime vm : vms) {
-      File resultDir =
-          temp.newFolder(
-              firstCompilerUnderTest.toString().toLowerCase() + "-output-" + vm.toString());
-
-      TestSpecification specification =
-          JctfTestSpecifications.getExpectedOutcome(
-              name,
-              firstCompilerUnderTest,
-              getRuntime(vm),
-              compilationMode,
-              compilerUnderTest == CompilerUnderTest.R8CF
-                  ? jctfOutcomeToSpecificationJava(name, resultDir)
-                  : jctfOutcomeToSpecification(name, DexTool.NONE, resultDir, vm.asDex().getVm()));
-
-      if (!specification.skipTest) {
-        vmSpecs.add(new VmSpec(vm, specification));
-      }
-    }
-
-    if (vmSpecs.isEmpty()) {
-      return vmErrors;
-    }
-
-    File classFile = new File(JCTF_TESTS_PREFIX + "/" + classFilePath);
-    if (!classFile.exists()) {
-      throw new FileNotFoundException(
-          "Class file for Jctf test not found: \"" + classFile.toString() + "\".");
-    }
-
-    ArrayList<File> classFiles = new ArrayList<>();
-    classFiles.add(classFile);
-
-    // some tests need files from other tests
-    int langIndex = fullClassName.indexOf(".java.");
-    assert langIndex >= 0;
-    List<String> externalClassFiles = jctfTestsExternalClassFiles
-        .get(fullClassName.substring(langIndex + ".java.".length()));
-
-    if (externalClassFiles != null) {
-      for (String s : externalClassFiles) {
-        classFiles.add(new File(JCTF_TESTS_LIB_PREFIX + "/java/" + s));
-      }
-    }
-
-    ArrayList<File> allClassFiles = new ArrayList<>();
-
-    for (File f : classFiles) {
-      allClassFiles.add(f);
-      allClassFiles.addAll(getJctfTestAuxClassFiles(f));
-    }
-
-    File jctfCommonFile = new File(JCTF_COMMON_JAR);
-    if (!jctfCommonFile.exists()) {
-      throw new FileNotFoundException(
-          "Jar file of Jctf tests common code not found: \"" + jctfCommonFile.toString() + "\".");
-    }
-
-    File junitFile = new File(JUNIT_JAR);
-    if (!junitFile.exists()) {
-      throw new FileNotFoundException(
-          "Junit Jar not found: \"" + junitFile.toString() + "\".");
-    }
-
-    File hamcrestFile = new File(HAMCREST_JAR);
-    if (!hamcrestFile.exists()) {
-      throw new FileNotFoundException(
-          "Hamcrest Jar not found: \"" + hamcrestFile.toString() + "\".");
-    }
-
-    // allClassFiles may contain duplicated files, that's why the HashSet
-    Set<String> fileNames = new HashSet<>();
-
-    fileNames.addAll(Arrays.asList(
-        jctfCommonFile.getCanonicalPath(),
-        junitFile.getCanonicalPath(),
-        hamcrestFile.getCanonicalPath()
-    ));
-
-    for (File f : allClassFiles) {
-      fileNames.add(f.getCanonicalPath());
-    }
-
-    if (compilerUnderTest == CompilerUnderTest.R8CF) {
-      assert vmSpecs.size() == 1
-          : "Running the same test on multiple JVMs should share the same build.";
-      for (VmSpec vmSpec : vmSpecs) {
-        runJctfTestDoRunOnJava(
-            fileNames, vmSpec.spec, fullClassName, compilationMode, vmSpec.vm.asCf().getVm());
-      }
-      return vmErrors;
-    }
-
-    CompilationOptions compilationOptions = null;
-    File compiledDir = temp.newFolder();
-    for (VmSpec vmSpec : vmSpecs) {
-      CompilationOptions thisOptions = new CompilationOptions(vmSpec.spec);
-      if (compilationOptions == null) {
-        compilationOptions = thisOptions;
-        executeCompilerUnderTest(
-            firstCompilerUnderTest,
-            fileNames,
-            compiledDir.getAbsolutePath(),
-            compilationMode,
-            compilationOptions);
-      } else {
-        // For now compile options don't change across vms.
-        assert compilationOptions.equals(thisOptions);
-      }
-      Files.copy(
-          compiledDir.toPath().resolve("classes.dex"),
-          vmSpec.spec.directory.toPath().resolve("classes.dex"));
-
-      AssertionError vmError = null;
-      try {
-        runJctfTestDoRunOnArt(fileNames, vmSpec.spec, fullClassName, vmSpec.vm.asDex().getVm());
-      } catch (AssertionError e) {
-        vmError = e;
-      }
-      if (vmSpec.spec.failsOnRun && vmError == null) {
-        vmErrors.addShouldHaveFailedError(firstCompilerUnderTest, vmSpec.vm);
-      } else if (!vmSpec.spec.failsOnRun && vmError != null) {
-        vmErrors.addFailedOnRunError(firstCompilerUnderTest, vmSpec.vm, vmError);
-      }
-    }
-
-    if (compilerUnderTest != CompilerUnderTest.R8_AFTER_D8) {
-      return vmErrors;
-    }
-
-    // Second pass (R8), if R8_AFTER_D8.
-    CompilationOptions r8CompilationOptions = null;
-    File r8CompiledDir = temp.newFolder();
-    for (VmSpec vmSpec : vmSpecs) {
-      if (vmSpec.spec.failsOnRun || vmErrors.failedVms.contains(vmSpec.vm)) {
-        continue;
-      }
-      File r8ResultDir = temp.newFolder("r8-output-" + vmSpec.vm.toString());
-      TestSpecification specification =
-          JctfTestSpecifications.getExpectedOutcome(
-              name,
-              CompilerUnderTest.R8_AFTER_D8,
-              getRuntime(vmSpec.vm),
-              CompilationMode.RELEASE,
-              jctfOutcomeToSpecification(name, DexTool.DX, r8ResultDir, vmSpec.vm.asDex().getVm()));
-      if (specification.skipTest) {
-        continue;
-      }
-      CompilationOptions thisOptions = new CompilationOptions(specification);
-      if (r8CompilationOptions == null) {
-        r8CompilationOptions = thisOptions;
-        executeCompilerUnderTest(
-            CompilerUnderTest.R8,
-            Collections.singletonList(compiledDir.toPath().resolve("classes.dex").toString()),
-            r8CompiledDir.getAbsolutePath(),
-            CompilationMode.RELEASE,
-            r8CompilationOptions);
-      } else {
-        // For now compile options don't change across vms.
-        assert r8CompilationOptions.equals(thisOptions);
-      }
-      Files.copy(
-          r8CompiledDir.toPath().resolve("classes.dex"),
-          specification.directory.toPath().resolve("classes.dex"));
-      try {
-        runJctfTestDoRunOnArt(fileNames, specification, fullClassName, vmSpec.vm.asDex().getVm());
-      } catch (AssertionError e) {
-        if (!specification.failsOnRun) {
-          vmErrors.addFailedOnRunError(CompilerUnderTest.R8, vmSpec.vm, e);
-        }
-      }
-    }
-    return vmErrors;
-  }
-
-  private void runJctfTestDoRunOnArt(
-      Collection<String> fileNames,
-      TestSpecification specification,
-      String fullClassName,
-      DexVm dexVm)
-      throws IOException {
-    if (!ToolHelper.artSupported() && !ToolHelper.dealsWithGoldenFiles()) {
-      return;
-    }
-
-    File processedFile;
-
-    // Collect the generated dex files.
-    File[] outputFiles =
-        specification.directory.listFiles((File file) -> file.getName().endsWith(".dex"));
-    assert outputFiles.length == 1;
-    processedFile = outputFiles[0];
-
-    boolean compileOnly = System.getProperty("jctf_compile_only", "0").equals("1");
-    if (compileOnly || specification.skipRun) {
-      if (ToolHelper.isDex2OatSupported()) {
-        // verify dex code instead of running it
-        Path oatFile = temp.getRoot().toPath().resolve("all.oat");
-        ToolHelper.runDex2Oat(processedFile.toPath(), oatFile);
-      }
-      return;
-    }
-
-    ArtCommandBuilder builder = buildArtCommand(processedFile, specification, dexVm);
-    if (dexVm.isNewerThan(DexVm.ART_4_4_4_HOST)) {
-      builder.appendArtOption("-Ximage:/system/non/existent/image.art");
-      builder.appendArtOption("-Xnoimage-dex2oat");
-    }
-    for (String s : ToolHelper.getBootLibs(dexVm)) {
-      builder.appendBootClasspath(new File(s).getCanonicalPath());
-    }
-    builder.setMainClass(JUNIT_TEST_RUNNER);
-    builder.appendProgramArgument(fullClassName);
-
-    try {
-      ToolHelper.runArt(builder);
-    } catch (AssertionError e) {
-      addDexInformationToVerificationError(fileNames, processedFile,
-          specification.resolveFile("classes.dex"), e);
-      throw e;
-    }
-  }
-
-  private void runJctfTestDoRunOnJava(
-      Collection<String> fileNames,
-      TestSpecification specification,
-      String fullClassName,
-      CompilationMode mode,
-      CfVm vm)
-      throws IOException, CompilationFailedException {
-    assert TestParametersBuilder.isSystemJdk(vm);
-    if (JctfTestSpecifications.compilationFailsWithAsmMethodTooLarge.contains(specification.name)) {
-      expectException(org.objectweb.asm.MethodTooLargeException.class);
-    }
-    executeCompilerUnderTest(
-        CompilerUnderTest.R8CF,
-        fileNames,
-        specification.directory.getAbsolutePath(),
-        mode,
-        new CompilationOptions(specification));
-
-    boolean compileOnly = System.getProperty("jctf_compile_only", "0").equals("1");
-
-    if (compileOnly || specification.skipRun) {
-      return;
-    }
-
-    if (specification.failsOnRun) {
-      expectException(AssertionError.class);
-    }
-
-    // Some tests rely on an OutOfMemoryError being thrown (fx MemoryHog.getBigArray()). To ensure
-    // compatible test results locally and externally, we need to synchronize the max heap size when
-    // running the test.
-    ProcessResult result =
-        ToolHelper.runJava(
-            specification.directory.toPath(),
-            "-Xmx" + ToolHelper.BOT_MAX_HEAP_SIZE,
-            JUNIT_TEST_RUNNER,
-            fullClassName);
-
-    if (result.exitCode != 0) {
-      throw new AssertionError(
-          "Test failed on java.\nSTDOUT >>>\n"
-              + result.stdout
-              + "\n<<< STDOUT\nSTDERR >>>\n"
-              + result.stderr
-              + "\n<<< STDERR\n");
-    }
-
-    if (specification.failsOnRun) {
-      System.err.println("Should have failed run with java.");
-    }
-  }
-
   protected void runArtTest(DexVm dexVm, CompilerUnderTest compilerUnderTest) throws Throwable {
     CompilerUnderTest firstCompilerUnderTest =
         compilerUnderTest == CompilerUnderTest.R8_AFTER_D8
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index e0bb322..5b8bb7a 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -1305,7 +1305,7 @@
     AndroidApp app = command.getInputApp();
     if (app.getLibraryResourceProviders().isEmpty()) {
       // Add the android library matching the minsdk. We filter out junit and testing classes
-      // from the android jar to avoid duplicate classes in art and jctf tests.
+      // from the android jar to avoid duplicate classes in art tests.
       AndroidApp.Builder builder = AndroidApp.builder(app);
       addFilteredAndroidJar(builder, AndroidApiLevel.getAndroidApiLevel(command.getMinApiLevel()));
       app = builder.build();
diff --git a/third_party/jctf.tar.gz.sha1 b/third_party/jctf.tar.gz.sha1
deleted file mode 100644
index ebad250..0000000
--- a/third_party/jctf.tar.gz.sha1
+++ /dev/null
@@ -1 +0,0 @@
-7104dcb8474c494083a204b6200207b42f6cf935
\ No newline at end of file
diff --git a/tools/create_jctf_tests.py b/tools/create_jctf_tests.py
deleted file mode 100755
index 38e1f9c..0000000
--- a/tools/create_jctf_tests.py
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/usr/bin/env python3
-# Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
-# for details. All rights reserved. Use of this source code is governed by a
-# BSD-style license that can be found in the LICENSE file.
-
-from __future__ import print_function
-from glob import glob
-from itertools import chain
-from os import makedirs
-from os.path import exists, join, dirname
-from shutil import rmtree
-from string import Template
-import os
-import re
-import sys
-
-import utils
-
-JCTFROOT = join(utils.REPO_ROOT, 'third_party', 'jctf')
-DESTINATION_DIR = join(utils.REPO_ROOT, 'build', 'generated', 'test', 'java',
-    'com', 'android', 'tools', 'r8', 'jctf')
-PACKAGE_PREFIX = 'com.google.jctf.test.lib.java.'
-RELATIVE_TESTDIR = join('LibTests', 'src', 'com', 'google', 'jctf', 'test',
-    'lib', 'java')
-TESTDIR = join(JCTFROOT, RELATIVE_TESTDIR)
-TEMPLATE = Template(
-"""// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.jctf.${compilerUnderTest}.${relativePackage};
-
-import org.junit.Test;
-import com.android.tools.r8.R8RunArtTestsTest;
-
-/**
- * Auto-generated test for the jctf test:
- * ${name}
- *
- * DO NOT EDIT THIS FILE. EDIT THE HERE DOCUMENT TEMPLATE IN
- * tools/create_jctf_tests.py INSTEAD!
- */
-public class ${testClassName} extends R8RunArtTestsTest {
-
-  public ${testClassName}() {
-    super("${nameWithoutPackagePrefix}", DexTool.NONE);
-  }
-
-  @Test
-  public void run${testClassName}() throws Exception {
-    // For testing with other Art VMs than the default set the system property
-    // 'dex_vm' to the desired VM string (e.g. '4.4.4', see ToolHelper.DexVm)
-    runJctfTest(CompilerUnderTest.${compilerUnderTestEnum},
-      "$classFile",
-      "$name"
-    );
-  }
-}
-""")
-
-EXIT_FAILURE = 1
-RE_PACKAGE = re.compile('package\\s+(com[^\\s;]*)')
-
-def fix_long_path(p):
-  if os.name == 'nt':
-    p = ('\\\\?\\' + p).decode('utf-8')
-  return p
-
-def file_contains_string(filepath, search_string):
-  with open(fix_long_path(filepath)) as f:
-    return search_string in f.read()
-
-def read_package_from_java_file(filepath):
-  with open(fix_long_path(filepath)) as f:
-    for line in f:
-      m = RE_PACKAGE.search(line)
-      if m:
-        return m.groups()[0]
-  raise IOError("Can't find package statement in java file: " + filepath)
-
-
-def generate_test(class_name, compiler_under_test, compiler_under_test_enum,
-    relative_package):
-  filename = join(DESTINATION_DIR, compiler_under_test,
-      relative_package.replace('.', os.sep), class_name + '.java')
-  utils.makedirs_if_needed(dirname(filename))
-
-  full_class_name = '{}{}.{}'.format(PACKAGE_PREFIX, relative_package,
-      class_name)
-  contents = TEMPLATE.substitute(
-      compilerUnderTest = compiler_under_test,
-      relativePackage = relative_package,
-      name = full_class_name,
-      testClassName = class_name,
-      compilerUnderTestEnum = compiler_under_test_enum,
-      classFile = full_class_name.replace('.', '/') + '.class',
-      nameWithoutPackagePrefix = '{}.{}'.format(relative_package, class_name))
-
-  with open(fix_long_path(filename), 'w') as f:
-    f.write(contents)
-
-def Main():
-  if not exists(JCTFROOT):
-    print('JCTF test package not found in {}'.format(JCTFROOT),
-        file = sys.stderr)
-    return EXIT_FAILURE
-
-  for tool in ['d8', 'r8']:
-    p = fix_long_path(join(DESTINATION_DIR, tool))
-    if exists(p):
-      rmtree(p)
-    makedirs(p)
-
-  java_files = (chain.from_iterable(glob(join(x[0], '*.java'))
-      for x in os.walk(TESTDIR)))
-
-  dot_java_dot = '.java.'
-
-  for f in java_files:
-    if not file_contains_string(f, '@Test'):
-      continue
-
-    class_name = os.path.splitext(os.path.basename(f))[0]
-    assert class_name.find('-') < 0
-
-    package = read_package_from_java_file(f)
-
-    idx = package.find(dot_java_dot)
-    assert idx >= 0
-    relative_package = package[idx + len(dot_java_dot):]
-
-    generate_test(class_name, 'd8', 'R8_AFTER_D8', relative_package)
-    generate_test(class_name, 'r8cf', 'R8CF', relative_package)
-
-
-if __name__ == '__main__':
-  sys.exit(Main())
diff --git a/tools/find_haning_test.py b/tools/find_haning_test.py
index 786fbcf..3c65317 100755
--- a/tools/find_haning_test.py
+++ b/tools/find_haning_test.py
@@ -5,7 +5,7 @@
 
 import argparse
 import sys
-import urllib
+
 
 def ParseOptions():
   parser = argparse.ArgumentParser(
@@ -14,7 +14,7 @@
 
 def get_started(stdout):
   # Lines look like:
-  # Start executing test runBigInteger_ZERO_A01 [com.android.tools.r8.jctf.r8cf.math.BigInteger.ZERO.BigInteger_ZERO_A01]
+  # Start executing test runBigInteger_ZERO_A01 [com.android.tools.r8.x.r8cf.math.BigInteger.ZERO.BigInteger_ZERO_A01]
   start_lines = []
   for line in stdout:
     if line.startswith('Start executing test'):
@@ -24,7 +24,7 @@
 
 def get_ended(stdout):
   # Lines look like:
-  # Done executing test runBigInteger_subtract_A01 [com.android.tools.r8.jctf.r8cf.math.BigInteger.subtractLjava_math_BigInteger.BigInteger_subtract_A01] with result: SUCCESS
+  # Done executing test runBigInteger_subtract_A01 [com.android.tools.r8.x.r8cf.math.BigInteger.subtractLjava_math_BigInteger.BigInteger_subtract_A01] with result: SUCCESS
   done_lines = []
   for line in stdout:
     if line.startswith('Done executing test'):
diff --git a/tools/test.py b/tools/test.py
index 1e5499f..665ab5f 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -7,9 +7,6 @@
 # if an argument is given, run only tests with that pattern. This script will
 # force the tests to run, even if no input changed.
 
-import archive_desugar_jdk_libs
-import download_kotlin_dev
-import notify
 import optparse
 import os
 import shutil
@@ -18,7 +15,10 @@
 import time
 import uuid
 
+import archive_desugar_jdk_libs
+import download_kotlin_dev
 import gradle
+import notify
 import utils
 
 if utils.is_python3():
@@ -101,15 +101,6 @@
       help='Tool to run ART tests with: "r8" (default) or "d8" or "r8cf"'
           ' (r8 w/CF-backend). Ignored if "--all_tests" enabled.',
       default=None, choices=["r8", "d8", "r8cf"])
-  result.add_option('--jctf',
-      help='Run JCTF tests with: "r8" (default) or "d8" or "r8cf".',
-      default=False, action='store_true')
-  result.add_option('--only-jctf', '--only_jctf',
-      help='Run only JCTF tests with: "r8" (default) or "d8" or "r8cf".',
-      default=False, action='store_true')
-  result.add_option('--jctf-compile-only', '--jctf_compile_only',
-      help="Don't run, only compile JCTF tests.",
-      default=False, action='store_true')
   result.add_option('--disable-assertions', '--disable_assertions',
       help='Disable assertions when running tests.',
       default=False, action='store_true')
@@ -277,14 +268,8 @@
     gradle_args.append('-Ptool=%s' % options.tool)
   if options.one_line_per_test:
     gradle_args.append('-Pone_line_per_test')
-  if options.jctf:
-    gradle_args.append('-Pjctf')
-  if options.only_jctf:
-    gradle_args.append('-Ponly_jctf')
   if options.test_namespace:
     gradle_args.append('-Ptest_namespace=%s' % options.test_namespace)
-  if options.jctf_compile_only:
-    gradle_args.append('-Pjctf_compile_only')
   if options.disable_assertions:
     gradle_args.append('-Pdisable_assertions')
   if options.with_code_coverage:
@@ -299,14 +284,7 @@
     gradle_args.append('-Pkotlin_compiler_dev')
     download_kotlin_dev.download_newest()
   if os.name == 'nt':
-    # temporary hack
     gradle_args.append('-Pno_internal')
-    gradle_args.append('-x')
-    gradle_args.append('createJctfTests')
-    gradle_args.append('-x')
-    gradle_args.append('jctfCommonJar')
-    gradle_args.append('-x')
-    gradle_args.append('jctfTestsClasses')
   if options.test_dir:
     gradle_args.append('-Ptest_dir=' + options.test_dir)
     if not os.path.exists(options.test_dir):
@@ -408,11 +386,6 @@
           timeout_handler, (timestamp_file, print_stacks_timeout,))
   rotate_test_reports()
 
-  if options.only_jctf:
-    # Note: not setting -Pruntimes will run with all available runtimes.
-    return_code = gradle.RunGradle(gradle_args, throw_on_failure=False)
-    return archive_and_return(return_code, options)
-
   # Now run tests on selected runtime(s).
   if options.runtimes:
     if options.dex_vm != 'default':