Revert "Only retain non-runtime annotations in intermediate mode."

This reverts commit cd6c774ded97ad9749f80697eb848e0d0ade7d44.

Reason for revert: This is breaking the art test:
Art005_annotationsTest
See: http://storage.googleapis.com/r8-test-results/28186d32-9b71-46af-bda4-01df080f717c/test/classes/com.android.tools.r8.art.dx.d8.Art005_annotationsTest.html#runArt005_annotationsTest

Also, it would be good to figure out if this is what is causing the wip redness

Change-Id: Ib79625491201c7478d57209e13e71bfd460ecfb9
diff --git a/src/main/java/com/android/tools/r8/D8Command.java b/src/main/java/com/android/tools/r8/D8Command.java
index 9438632..f0591ee 100644
--- a/src/main/java/com/android/tools/r8/D8Command.java
+++ b/src/main/java/com/android/tools/r8/D8Command.java
@@ -249,7 +249,6 @@
     internal.minimalMainDex = internal.debug;
     internal.minApiLevel = getMinApiLevel();
     internal.intermediate = intermediate;
-    internal.readCompileTimeAnnotations = intermediate;
     // Assert and fixup defaults.
     assert !internal.isShrinking();
     assert !internal.isMinifying();
diff --git a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
index 168d3e9..2a290b6 100644
--- a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
+++ b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
@@ -27,7 +27,6 @@
 import com.android.tools.r8.graph.DexValue.DexValueShort;
 import com.android.tools.r8.graph.DexValue.DexValueString;
 import com.android.tools.r8.graph.DexValue.DexValueType;
-import com.android.tools.r8.ir.desugar.CovariantReturnTypeAnnotationTransformer;
 import com.android.tools.r8.jar.CfApplicationWriter;
 import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.shaking.ProguardKeepAttributes;
@@ -152,31 +151,10 @@
       List<DexAnnotation> annotations,
       JarApplicationReader application) {
     assert annotations != null;
-    if (visible || retainCompileTimeAnnotation(desc, application)) {
-      int visiblity = visible ? DexAnnotation.VISIBILITY_RUNTIME : DexAnnotation.VISIBILITY_BUILD;
-      return new CreateAnnotationVisitor(
-          application,
-          (names, values) ->
-              annotations.add(
-                  new DexAnnotation(
-                      visiblity, createEncodedAnnotation(desc, names, values, application))));
-    }
-    return null;
-  }
-
-  private static boolean retainCompileTimeAnnotation(
-      String desc, JarApplicationReader application) {
-    if (application.options.readCompileTimeAnnotations) {
-      return true;
-    }
-    if (application.options.processCovariantReturnTypeAnnotations) {
-      // @CovariantReturnType annotations are processed by CovariantReturnTypeAnnotationTransformer,
-      // they thus need to be read here and will then be removed as part of the processing.
-      DexType type = application.getTypeFromDescriptor(desc);
-      return CovariantReturnTypeAnnotationTransformer.isCovariantReturnTypeAnnotation(
-          type, application.options.itemFactory);
-    }
-    return false;
+    int visiblity = visible ? DexAnnotation.VISIBILITY_RUNTIME : DexAnnotation.VISIBILITY_BUILD;
+    return new CreateAnnotationVisitor(application, (names, values) ->
+        annotations.add(new DexAnnotation(visiblity,
+            createEncodedAnnotation(desc, names, values, application))));
   }
 
   private static DexEncodedAnnotation createEncodedAnnotation(String desc,
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/CovariantReturnTypeAnnotationTransformer.java b/src/main/java/com/android/tools/r8/ir/desugar/CovariantReturnTypeAnnotationTransformer.java
index 9c0c542..0c76382 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/CovariantReturnTypeAnnotationTransformer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/CovariantReturnTypeAnnotationTransformer.java
@@ -248,12 +248,8 @@
   }
 
   private boolean isCovariantReturnTypeAnnotation(DexEncodedAnnotation annotation) {
-    return isCovariantReturnTypeAnnotation(annotation.type, factory);
-  }
-
-  public static boolean isCovariantReturnTypeAnnotation(DexType type, DexItemFactory factory) {
-    return type == factory.annotationCovariantReturnType
-        || type == factory.annotationCovariantReturnTypes;
+    return annotation.type == factory.annotationCovariantReturnType
+        || annotation.type == factory.annotationCovariantReturnTypes;
   }
 
   private static boolean hasVirtualMethodWithSignature(DexClass clazz, DexEncodedMethod method) {
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index c00f327..9d2101f 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -262,7 +262,6 @@
   // Skipping min_api check and compiling an intermediate result intended for later merging.
   // Intermediate builds also emits or update synthesized classes mapping.
   public boolean intermediate = false;
-  public boolean readCompileTimeAnnotations = true;
   public List<String> logArgumentsFilter = ImmutableList.of();
 
   // Flag to turn on/off lambda class merging in R8.
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index 310124e..11dc790 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -734,13 +734,6 @@
   // checked into the Art repo.
   private static final Multimap<String, TestCondition> failingRunWithArtOutput =
       new ImmutableListMultimap.Builder<String, TestCondition>()
-          // This test assumes that class-retention annotations are preserved by the compiler and
-          // then checks for backwards compatibility with M where they could incorrectly be observed
-          // by the program at runtime.
-          .put(
-              "005-annotations",
-              TestCondition.match(
-                  TestCondition.compilers(CompilerUnderTest.D8, CompilerUnderTest.D8_AFTER_R8CF)))
           // On Art 4.4.4 we have fewer refs than expected (except for d8 when compiled with dx).
           .put("072-precise-gc",
               TestCondition.match(
diff --git a/src/test/java/com/android/tools/r8/TestBaseBuilder.java b/src/test/java/com/android/tools/r8/TestBaseBuilder.java
index 4f512b7..581bfe8 100644
--- a/src/test/java/com/android/tools/r8/TestBaseBuilder.java
+++ b/src/test/java/com/android/tools/r8/TestBaseBuilder.java
@@ -9,11 +9,9 @@
 import com.android.tools.r8.utils.DescriptorUtils;
 import com.google.common.collect.ImmutableMap;
 import java.nio.file.Path;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
-import java.util.stream.Collectors;
 
 public abstract class TestBaseBuilder<
         C extends BaseCommand,
@@ -69,16 +67,6 @@
     return self();
   }
 
-  public T addMainDexListClasses(Class<?>... classes) {
-    return addMainDexListClasses(Arrays.asList(classes));
-  }
-
-  public T addMainDexListClasses(Collection<Class<?>> classes) {
-    builder.addMainDexClasses(
-        classes.stream().map(Class::getTypeName).collect(Collectors.toList()));
-    return self();
-  }
-
   public T addMainDexListFiles(Collection<Path> files) {
     builder.addMainDexListFiles(files);
     return self();
diff --git a/src/test/java/com/android/tools/r8/TestParametersBuilder.java b/src/test/java/com/android/tools/r8/TestParametersBuilder.java
index 6fbb80f..42d47e3 100644
--- a/src/test/java/com/android/tools/r8/TestParametersBuilder.java
+++ b/src/test/java/com/android/tools/r8/TestParametersBuilder.java
@@ -23,7 +23,7 @@
       getAvailableRuntimes().collect(Collectors.toList());
 
   // Predicate describing which test parameters are applicable to the test.
-  // Built via the methods found below. Defaults to no applicable parameters, i.e., the emtpy set.
+  // Built via the methods found below. Default to no applicable parameters, i.e., the emtpy set.
   private Predicate<TestParameters> filter = param -> false;
 
   private TestParametersBuilder() {}
@@ -142,34 +142,11 @@
    */
   private static final AndroidApiLevel lowestCompilerApiLevel = AndroidApiLevel.B;
 
-  private boolean enableApiLevels = false;
-
-  private Predicate<AndroidApiLevel> apiLevelFilter = param -> false;
-
-  private TestParametersBuilder withApiFilter(Predicate<AndroidApiLevel> filter) {
-    enableApiLevels = true;
-    apiLevelFilter = apiLevelFilter.or(filter);
-    return this;
-  }
+  private boolean enableAllApiLevels = false;
 
   public TestParametersBuilder withAllApiLevels() {
-    return withApiFilter(api -> true);
-  }
-
-  public TestParametersBuilder withApiLevelsStartingAtIncluding(AndroidApiLevel startInclusive) {
-    return withApiFilter(api -> startInclusive.getLevel() <= api.getLevel());
-  }
-
-  public TestParametersBuilder withApiLevelsStartingAtExcluding(AndroidApiLevel startExclusive) {
-    return withApiFilter(api -> startExclusive.getLevel() < api.getLevel());
-  }
-
-  public TestParametersBuilder withApiLevelsEndingAtInclusive(AndroidApiLevel endInclusive) {
-    return withApiFilter(api -> api.getLevel() <= endInclusive.getLevel());
-  }
-
-  public TestParametersBuilder withApiLevelsEndingAtExcluding(AndroidApiLevel endExclusive) {
-    return withApiFilter(api -> api.getLevel() < endExclusive.getLevel());
+    enableAllApiLevels = true;
+    return this;
   }
 
   public TestParametersCollection build() {
@@ -181,31 +158,15 @@
   }
 
   public Stream<TestParameters> createParameters(TestRuntime runtime) {
-    if (!enableApiLevels || !runtime.isDex()) {
-      return Stream.of(new TestParameters(runtime));
-    }
-    List<AndroidApiLevel> sortedApiLevels =
-        Arrays.stream(AndroidApiLevel.values()).filter(apiLevelFilter).collect(Collectors.toList());
-    if (sortedApiLevels.isEmpty()) {
-      return Stream.of();
-    }
-    AndroidApiLevel vmLevel = runtime.asDex().getMinApiLevel();
-    AndroidApiLevel lowestApplicable = sortedApiLevels.get(sortedApiLevels.size() - 1);
-    if (vmLevel.getLevel() < lowestApplicable.getLevel()) {
-      return Stream.of();
-    }
-    if (sortedApiLevels.size() > 1) {
-      for (int i = 0; i < sortedApiLevels.size(); i++) {
-        AndroidApiLevel highestApplicable = sortedApiLevels.get(i);
-        if (highestApplicable.getLevel() <= vmLevel.getLevel()
-            && lowestApplicable != highestApplicable) {
-          return Stream.of(
-              new TestParameters(runtime, lowestApplicable),
-              new TestParameters(runtime, highestApplicable));
-        }
+    if (enableAllApiLevels && runtime.isDex()) {
+      AndroidApiLevel vmLevel = runtime.asDex().getMinApiLevel();
+      if (vmLevel != lowestCompilerApiLevel) {
+        return Stream.of(
+            new TestParameters(runtime, vmLevel),
+            new TestParameters(runtime, lowestCompilerApiLevel));
       }
     }
-    return Stream.of(new TestParameters(runtime, lowestApplicable));
+    return Stream.of(new TestParameters(runtime));
   }
 
   // Public method to check that the CF runtime coincides with the system runtime.
diff --git a/src/test/java/com/android/tools/r8/annotations/RetentionPolicyTest.java b/src/test/java/com/android/tools/r8/annotations/RetentionPolicyTest.java
deleted file mode 100644
index be166ec..0000000
--- a/src/test/java/com/android/tools/r8/annotations/RetentionPolicyTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright (c) 2019, 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.annotations;
-
-import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import com.android.tools.r8.TestBase;
-import com.android.tools.r8.TestBuilder;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.utils.StringUtils;
-import com.android.tools.r8.utils.codeinspector.ClassSubject;
-import com.android.tools.r8.utils.codeinspector.CodeInspector;
-import com.google.common.collect.ImmutableList;
-import java.lang.annotation.Annotation;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.Collection;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class RetentionPolicyTest extends TestBase {
-
-  private static final Collection<Class<?>> CLASSES =
-      ImmutableList.of(ClassRetained.class, SourceRetained.class, RuntimeRetained.class, A.class);
-
-  private static final String EXPECTED =
-      StringUtils.lines("@" + RuntimeRetained.class.getName() + "()");
-
-  @Parameters(name = "{0}, intermediate:{1}")
-  public static List<Object> data() {
-    return getTestParameters().withAllRuntimes().build().stream()
-        .flatMap(
-            parameters -> {
-              if (parameters.isCfRuntime()) {
-                return Stream.of((Object) new Object[] {parameters, false});
-              }
-              return Stream.of(new Object[] {parameters, true}, new Object[] {parameters, false});
-            })
-        .collect(Collectors.toList());
-  }
-
-  private final TestParameters parameters;
-  private final boolean intermediate;
-
-  public RetentionPolicyTest(TestParameters parameters, boolean intermediate) {
-    this.parameters = parameters;
-    this.intermediate = intermediate;
-  }
-
-  @Retention(RetentionPolicy.CLASS)
-  @interface ClassRetained {}
-
-  @Retention(RetentionPolicy.SOURCE)
-  @interface SourceRetained {}
-
-  @Retention(RetentionPolicy.RUNTIME)
-  @interface RuntimeRetained {}
-
-  @ClassRetained
-  @SourceRetained
-  @RuntimeRetained
-  public static class A {
-
-    public static void main(String[] args) {
-      for (Annotation annotation : A.class.getAnnotations()) {
-        System.out.println(annotation);
-      }
-    }
-  }
-
-  @Test
-  public void test() throws Exception {
-    TestBuilder<?, ?> testBuilder =
-        parameters.isCfRuntime()
-            ? testForJvm()
-            : testForD8().setMinApi(parameters.getRuntime()).setIntermediate(intermediate);
-
-    CodeInspector inspector =
-        testBuilder
-            .addProgramClasses(CLASSES)
-            .run(parameters.getRuntime(), A.class)
-            .assertSuccessWithOutput(EXPECTED)
-            .inspector();
-
-    ClassSubject clazz = inspector.clazz(A.class);
-    assertThat(clazz, isPresent());
-    // Source retained annotations are always gone, even in the CF inputs.
-    assertFalse(clazz.annotation(SourceRetained.class.getName()).isPresent());
-    // Class retained annotations are present in CF and in intermediate builds.
-    assertEquals(
-        parameters.isCfRuntime() || intermediate,
-        clazz.annotation(ClassRetained.class.getName()).isPresent());
-    // Runtime retained annotations are present in all.
-    assertTrue(clazz.annotation(RuntimeRetained.class.getName()).isPresent());
-  }
-}
diff --git a/src/test/java/com/android/tools/r8/ir/desugar/annotations/CovariantReturnTypeAnnotationTransformerTest.java b/src/test/java/com/android/tools/r8/ir/desugar/annotations/CovariantReturnTypeAnnotationTransformerTest.java
index eaa8718..f1f2842 100644
--- a/src/test/java/com/android/tools/r8/ir/desugar/annotations/CovariantReturnTypeAnnotationTransformerTest.java
+++ b/src/test/java/com/android/tools/r8/ir/desugar/annotations/CovariantReturnTypeAnnotationTransformerTest.java
@@ -6,7 +6,6 @@
 
 import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
 import static org.hamcrest.CoreMatchers.containsString;
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
 
 import com.android.tools.r8.AsmTestBase;
@@ -21,12 +20,8 @@
 
 public class CovariantReturnTypeAnnotationTransformerTest extends AsmTestBase {
   public static final String PACKAGE_NAME = "com/android/tools/r8/ir/desugar/annotations";
-  public static final String CRT_BINARY_NAME = "dalvik/annotation/codegen/CovariantReturnType";
-  public static final String CRTS_INNER_NAME = "CovariantReturnTypes";
-  public static final String CRTS_BINARY_NAME = CRT_BINARY_NAME + "$" + CRTS_INNER_NAME;
-
-  public static final String CRT_TYPE_NAME = CRT_BINARY_NAME.replace('/', '.');
-  public static final String CRTS_TYPE_NAME = CRT_BINARY_NAME.replace('/', '.');
+  public static final String CRT_NAME = "dalvik/annotation/codegen/CovariantReturnType";
+  public static final String CRTS_SIMPLE_NAME = "CovariantReturnTypes";
 
   @Test
   public void testVersion1WithClient1And2() throws Exception {
@@ -37,9 +32,6 @@
             ToolHelper.getClassAsBytes(B.class),
             ToolHelper.getClassAsBytes(C.class));
 
-    // Version 1 does not contain annotations.
-    checkPresenceOfCovariantAnnotations(input, false);
-
     // Version 1 of the library should always work.
     succeedsIndependentOfFlag(input, false);
   }
@@ -53,9 +45,6 @@
             ToolHelper.getClassAsBytes(B.class),
             ToolHelper.getClassAsBytes(C.class));
 
-    // Version 1 does not contain annotations.
-    checkPresenceOfCovariantAnnotations(input, false);
-
     // There will be no methods with the signature "L.../B;->method()L.../B;" and
     // "L.../C;->method()L.../C;".
     failsIndependentOfFlag(input);
@@ -70,9 +59,6 @@
             com.android.tools.r8.ir.desugar.annotations.version2.BDump.dump(),
             com.android.tools.r8.ir.desugar.annotations.version2.CDump.dump());
 
-    // Version 2 contains annotations.
-    checkPresenceOfCovariantAnnotations(input, true);
-
     // Version 2 of the library should always work.
     succeedsIndependentOfFlag(input, true);
   }
@@ -86,9 +72,6 @@
             com.android.tools.r8.ir.desugar.annotations.version2.BDump.dump(),
             com.android.tools.r8.ir.desugar.annotations.version2.CDump.dump());
 
-    // Version 2 contains annotations.
-    checkPresenceOfCovariantAnnotations(input, true);
-
     // If CovariantReturnType annotations are processed, then synthetic methods with the signatures
     // "L.../B;->method()L.../B;" and "L.../C;->method()L.../C;" will be added by D8.
     succeedsWithOption(input, true, true);
@@ -107,9 +90,6 @@
             com.android.tools.r8.ir.desugar.annotations.version3.BDump.dump(),
             com.android.tools.r8.ir.desugar.annotations.version3.CDump.dump());
 
-    // Version 3 does not contain annotations.
-    checkPresenceOfCovariantAnnotations(input, false);
-
     // Version 3 of the library should always work.
     succeedsIndependentOfFlag(input, false);
   }
@@ -123,9 +103,6 @@
             com.android.tools.r8.ir.desugar.annotations.version3.BDump.dump(),
             com.android.tools.r8.ir.desugar.annotations.version3.CDump.dump());
 
-    // Version 3 does not contain annotations.
-    checkPresenceOfCovariantAnnotations(input, false);
-
     // Version 3 of the library should always work with client 1.
     succeedsIndependentOfFlag(input, false);
   }
@@ -139,15 +116,9 @@
             com.android.tools.r8.ir.desugar.annotations.version2.BDump.dump(),
             com.android.tools.r8.ir.desugar.annotations.version2.CDump.dump());
 
-    // Version 2 contains annotations.
-    checkPresenceOfCovariantAnnotations(input, true);
-
     AndroidApp output =
         compileWithD8(input, options -> options.processCovariantReturnTypeAnnotations = true);
 
-    // Compilation output does not contain annotations.
-    checkPresenceOfCovariantAnnotations(output, false);
-
     // Compilation will fail with a compilation error the second time if the implementation does
     // not remove the CovariantReturnType annotations properly during the first compilation.
     compileWithD8(output, options -> options.processCovariantReturnTypeAnnotations = true);
@@ -158,8 +129,8 @@
     AndroidApp output =
         compileWithD8(input, options -> options.processCovariantReturnTypeAnnotations = option);
     String stdout = runOnArt(output, Client.class.getCanonicalName());
-    assertEquals(getExpectedOutput(), stdout);
-    checkPresenceOfCovariantAnnotations(output, false);
+    Assert.assertEquals(getExpectedOutput(), stdout);
+
     if (option && checkPresenceOfSyntheticMethods) {
       checkPresenceOfSyntheticMethods(output);
     }
@@ -168,7 +139,6 @@
   private void failsWithOption(AndroidApp input, boolean option) throws Exception {
     AndroidApp output =
         compileWithD8(input, options -> options.processCovariantReturnTypeAnnotations = option);
-    checkPresenceOfCovariantAnnotations(output, false);
     ToolHelper.ProcessResult result = runOnArtRaw(output, Client.class.getCanonicalName());
     assertThat(result.stderr, containsString("java.lang.NoSuchMethodError"));
   }
@@ -184,18 +154,6 @@
     failsWithOption(input, false);
   }
 
-  private void checkPresenceOfCovariantAnnotations(AndroidApp app, boolean expected)
-      throws Exception {
-    CodeInspector inspector = new CodeInspector(app);
-    assertEquals(
-        expected,
-        inspector.allClasses().stream()
-            .anyMatch(
-                clazz ->
-                    clazz.allMethods().stream()
-                        .anyMatch(method -> method.annotation(CRTS_TYPE_NAME).isPresent())));
-  }
-
   private void checkPresenceOfSyntheticMethods(AndroidApp output) throws Exception {
     CodeInspector inspector = new CodeInspector(output);
 
diff --git a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/BDump.java b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/BDump.java
index 1b6d3ef..3dadc2b 100644
--- a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/BDump.java
+++ b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/BDump.java
@@ -4,7 +4,7 @@
 
 package com.android.tools.r8.ir.desugar.annotations.version2;
 
-import static com.android.tools.r8.ir.desugar.annotations.CovariantReturnTypeAnnotationTransformerTest.CRT_BINARY_NAME;
+import static com.android.tools.r8.ir.desugar.annotations.CovariantReturnTypeAnnotationTransformerTest.CRT_NAME;
 import static com.android.tools.r8.ir.desugar.annotations.CovariantReturnTypeAnnotationTransformerTest.PACKAGE_NAME;
 
 import org.objectweb.asm.AnnotationVisitor;
@@ -40,7 +40,7 @@
     {
       mv = cw.visitMethod(ACC_PUBLIC, "method", "()L" + PACKAGE_NAME + "/A;", null, null);
       {
-        av0 = mv.visitAnnotation("L" + CRT_BINARY_NAME + ";", false);
+        av0 = mv.visitAnnotation("L" + CRT_NAME + ";", false);
         av0.visit("returnType", Type.getType("L" + PACKAGE_NAME + "/B;"));
         av0.visit("presentAfter", new Integer(25));
         av0.visitEnd();
diff --git a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/CDump.java b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/CDump.java
index 2838141..30cf603 100644
--- a/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/CDump.java
+++ b/src/test/java/com/android/tools/r8/ir/desugar/annotations/version2/CDump.java
@@ -4,9 +4,8 @@
 
 package com.android.tools.r8.ir.desugar.annotations.version2;
 
-import static com.android.tools.r8.ir.desugar.annotations.CovariantReturnTypeAnnotationTransformerTest.CRTS_BINARY_NAME;
-import static com.android.tools.r8.ir.desugar.annotations.CovariantReturnTypeAnnotationTransformerTest.CRTS_INNER_NAME;
-import static com.android.tools.r8.ir.desugar.annotations.CovariantReturnTypeAnnotationTransformerTest.CRT_BINARY_NAME;
+import static com.android.tools.r8.ir.desugar.annotations.CovariantReturnTypeAnnotationTransformerTest.CRTS_SIMPLE_NAME;
+import static com.android.tools.r8.ir.desugar.annotations.CovariantReturnTypeAnnotationTransformerTest.CRT_NAME;
 import static com.android.tools.r8.ir.desugar.annotations.CovariantReturnTypeAnnotationTransformerTest.PACKAGE_NAME;
 
 import org.objectweb.asm.AnnotationVisitor;
@@ -32,9 +31,9 @@
     cw.visit(V1_8, ACC_PUBLIC + ACC_SUPER, PACKAGE_NAME + "/C", null, PACKAGE_NAME + "/B", null);
 
     cw.visitInnerClass(
-        CRTS_BINARY_NAME,
-        CRT_BINARY_NAME,
-        CRTS_INNER_NAME,
+        CRT_NAME + "$" + CRTS_SIMPLE_NAME,
+        CRT_NAME,
+        CRTS_SIMPLE_NAME,
         ACC_PUBLIC + ACC_STATIC + ACC_ANNOTATION + ACC_ABSTRACT + ACC_INTERFACE);
 
     {
@@ -49,17 +48,17 @@
     {
       mv = cw.visitMethod(ACC_PUBLIC, "method", "()L" + PACKAGE_NAME + "/A;", null, null);
       {
-        av0 = mv.visitAnnotation("L" + CRTS_BINARY_NAME + ";", false);
+        av0 = mv.visitAnnotation("L" + CRT_NAME + "$" + CRTS_SIMPLE_NAME + ";", false);
         {
           AnnotationVisitor av1 = av0.visitArray("value");
           {
-            AnnotationVisitor av2 = av1.visitAnnotation(null, "L" + CRT_BINARY_NAME + ";");
+            AnnotationVisitor av2 = av1.visitAnnotation(null, "L" + CRT_NAME + ";");
             av2.visit("returnType", Type.getType("L" + PACKAGE_NAME + "/B;"));
             av2.visit("presentAfter", new Integer(25));
             av2.visitEnd();
           }
           {
-            AnnotationVisitor av2 = av1.visitAnnotation(null, "L" + CRT_BINARY_NAME + ";");
+            AnnotationVisitor av2 = av1.visitAnnotation(null, "L" + CRT_NAME + ";");
             av2.visit("returnType", Type.getType("L" + PACKAGE_NAME + "/C;"));
             av2.visit("presentAfter", new Integer(28));
             av2.visitEnd();
diff --git a/src/test/java/com/android/tools/r8/maindexlist/MainDexWithSynthesizedClassesTest.java b/src/test/java/com/android/tools/r8/maindexlist/MainDexWithSynthesizedClassesTest.java
deleted file mode 100644
index 94e2a9c..0000000
--- a/src/test/java/com/android/tools/r8/maindexlist/MainDexWithSynthesizedClassesTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright (c) 2019, 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.maindexlist;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assume.assumeTrue;
-
-import com.android.tools.r8.D8TestCompileResult;
-import com.android.tools.r8.OutputMode;
-import com.android.tools.r8.TestBase;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.ir.desugar.LambdaRewriter;
-import com.android.tools.r8.utils.AndroidApiLevel;
-import com.android.tools.r8.utils.StringUtils;
-import com.android.tools.r8.utils.codeinspector.CodeInspector;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-
-@RunWith(Parameterized.class)
-public class MainDexWithSynthesizedClassesTest extends TestBase {
-
-  static final AndroidApiLevel nativeMultiDexLevel = AndroidApiLevel.L;
-
-  static final String EXPECTED = StringUtils.lines("AB");
-
-  private final TestParameters parameters;
-
-  @Parameterized.Parameters(name = "{0}")
-  public static TestParametersCollection data() {
-    return getTestParameters()
-        .withAllRuntimes()
-        .withApiLevelsEndingAtExcluding(nativeMultiDexLevel)
-        .build();
-  }
-
-  public MainDexWithSynthesizedClassesTest(TestParameters parameters) {
-    this.parameters = parameters;
-  }
-
-  @Test
-  public void testFinal() throws Exception {
-    if (parameters.isCfRuntime()) {
-      testForJvm()
-          .addTestClasspath()
-          .run(parameters.getRuntime(), TestClass.class)
-          .assertSuccessWithOutput(EXPECTED);
-    } else {
-      D8TestCompileResult compileResult =
-          testForD8()
-              .addInnerClasses(MainDexWithSynthesizedClassesTest.class)
-              .addMainDexListClasses(TestClass.class, A.class)
-              .setMinApiThreshold(parameters.getApiLevel())
-              .compile();
-      checkCompilationResult(compileResult);
-    }
-  }
-
-  @Test
-  public void testIntermediate() throws Exception {
-    assumeTrue(parameters.isDexRuntime());
-    D8TestCompileResult intermediateResult =
-        testForD8()
-            .addInnerClasses(MainDexWithSynthesizedClassesTest.class)
-            .setMinApiThreshold(parameters.getApiLevel())
-            .setIntermediate(true)
-            .compile();
-    D8TestCompileResult compileResult =
-        testForD8()
-            .addProgramFiles(intermediateResult.writeToZip())
-            .addMainDexListClasses(TestClass.class, A.class)
-            .setMinApiThreshold(parameters.getApiLevel())
-            .compile();
-    checkCompilationResult(compileResult);
-  }
-
-  private void checkCompilationResult(D8TestCompileResult compileResult) throws Exception {
-    if (parameters.getRuntime().asDex().getMinApiLevel().getLevel()
-        < nativeMultiDexLevel.getLevel()) {
-      compileResult
-          .runDex2Oat(parameters.getRuntime().asDex().getVm())
-          .assertNoVerificationErrors();
-    } else {
-      compileResult.run(parameters.getRuntime(), TestClass.class).assertSuccessWithOutput(EXPECTED);
-    }
-    Path out = temp.newFolder().toPath();
-    compileResult.apply(b -> b.app.writeToDirectory(out, OutputMode.DexIndexed));
-    Path classes = out.resolve("classes.dex");
-    Path classes2 = out.resolve("classes2.dex");
-    assertTrue(Files.exists(classes));
-    assertTrue(Files.exists(classes2));
-    checkContainsLambdaClasses(new CodeInspector(classes), A.class);
-    checkContainsLambdaClasses(new CodeInspector(classes2), B.class);
-  }
-
-  private void checkContainsLambdaClasses(CodeInspector inspector, Class<?> lambdaHolder) {
-    assertTrue(
-        inspector.allClasses().stream()
-            .anyMatch(
-                clazz ->
-                    clazz.getOriginalName().contains(LambdaRewriter.LAMBDA_CLASS_NAME_PREFIX)
-                        && clazz
-                            .getOriginalName()
-                            .contains("$" + lambdaHolder.getSimpleName() + "$")));
-  }
-
-  static class TestClass {
-    public static void main(String[] args) {
-      System.out.println(new A().foo().get());
-    }
-  }
-
-  interface Getter {
-    String get();
-  }
-
-  static class A {
-    Getter foo() {
-      return () -> "A" + new B().foo().get();
-    }
-  }
-
-  static class B {
-    Getter foo() {
-      return () -> "B";
-    }
-  }
-}
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java b/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
index 2d30f24..f585226 100644
--- a/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
+++ b/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
@@ -95,7 +95,11 @@
       obfuscatedToOriginalMapping = null;
     }
     Timing timing = new Timing("CodeInspector");
-    InternalOptions options = runOptionsConsumer(optionsConsumer);
+    InternalOptions options = new InternalOptions();
+    options.enableCfFrontend = true;
+    if (optionsConsumer != null) {
+      optionsConsumer.accept(options);
+    }
     dexItemFactory = options.itemFactory;
     AndroidApp input = AndroidApp.builder().addProgramFiles(files).build();
     application = new ApplicationReader(input, options, timing).read();