Revert "[KeepAnno] Enable more tests for native interpretation"

Revert submission 89581

Reason for revert: Broke build, threading module when missing.

Reverted changes: /q/submissionid:89581

Change-Id: I77951d6bfdffd6810c71e078efe861da3f84bc69
diff --git a/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcher.java b/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcher.java
index 0d7e1b2..ccac25a 100644
--- a/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcher.java
+++ b/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcher.java
@@ -239,32 +239,22 @@
         return;
       }
       KeepClassItemPattern classPattern = schema.classes.get(classIndex);
-      if (classPattern.getClassNamePattern().isExact()) {
-        DexType type =
-            appInfo
-                .dexItemFactory()
-                .createType(classPattern.getClassNamePattern().getExactDescriptor());
-        DexProgramClass clazz = DexProgramClass.asProgramClassOrNull(appInfo.definitionFor(type));
-        if (clazz == null) {
-          // No valid match, so the rule is discarded. This should likely be a diagnostics info.
-          return;
-        }
-        if (!predicates.matchesClass(clazz, classPattern)) {
-          // Invalid match for this class.
-          return;
-        }
-        continueWithClass(classIndex, clazz);
-      } else {
-        // TODO(b/323816623): This repeated iteration on all classes must be avoided.
-        for (DexProgramClass clazz : appInfo.classes()) {
-          if (predicates.matchesClass(clazz, classPattern)) {
-            continueWithClass(classIndex, clazz);
-          }
-        }
+      if (!classPattern.getClassNamePattern().isExact()) {
+        throw new Unimplemented();
       }
-    }
-
-    private void continueWithClass(int classIndex, DexProgramClass clazz) {
+      DexType type =
+          appInfo
+              .dexItemFactory()
+              .createType(classPattern.getClassNamePattern().getExactDescriptor());
+      DexProgramClass clazz = DexProgramClass.asProgramClassOrNull(appInfo.definitionFor(type));
+      if (clazz == null) {
+        // No valid match, so the rule is discarded. This should likely be a diagnostics info.
+        return;
+      }
+      if (!predicates.matchesClass(clazz, classPattern)) {
+        // Invalid match for this class.
+        return;
+      }
       assignment.setClass(classIndex, clazz);
       IntList classMemberIndexList = schema.classMembers.get(classIndex);
       findMatchingMember(0, classMemberIndexList, clazz, classIndex + 1);
@@ -280,55 +270,48 @@
         findMatchingClass(nextClassIndex);
         return;
       }
+      int nextMemberInHolderIndex = memberInHolderIndex + 1;
       int memberIndex = memberIndexTranslation.getInt(memberInHolderIndex);
       KeepMemberItemPattern memberItemPattern = schema.members.get(memberIndex);
-      Consumer<ProgramDefinition> continueWithMember =
-          m ->
-              continueWithMember(
-                  m, memberIndex, memberInHolderIndex + 1, memberIndexTranslation, nextClassIndex);
       memberItemPattern
           .getMemberPattern()
           .match(
-              generalMemberPattern -> {
-                if (!holder.hasMethodsOrFields() && generalMemberPattern.isAllMembers()) {
+              generalMember -> {
+                if (!holder.hasMethodsOrFields()) {
                   // The empty class can only match the "all member" pattern but with no assignment.
-                  continueWithMember.accept(holder);
-                } else {
-                  holder.forEachProgramMember(
-                      m -> {
-                        if (predicates.matchesGeneralMember(
-                            m.getDefinition(), generalMemberPattern)) {
-                          continueWithMember.accept(m);
-                        }
-                      });
+                  if (generalMember.isAllMembers()) {
+                    assignment.setEmptyMemberMatch(memberIndex);
+                    findMatchingMember(
+                        nextMemberInHolderIndex, memberIndexTranslation, holder, nextClassIndex);
+                  }
+                  return;
                 }
+                if (!generalMember.isAllMembers()) {
+                  throw new Unimplemented();
+                }
+                holder.forEachProgramMember(
+                    f -> {
+                      assignment.setMember(memberIndex, f);
+                      findMatchingMember(
+                          nextMemberInHolderIndex, memberIndexTranslation, holder, nextClassIndex);
+                    });
               },
-              fieldPattern ->
-                  holder.forEachProgramFieldMatching(
-                      f -> predicates.matchesField(f, fieldPattern), continueWithMember),
-              methodPattern ->
-                  holder.forEachProgramMethodMatching(
-                      m -> predicates.matchesMethod(m, methodPattern), continueWithMember));
-    }
-
-    private void continueWithMember(
-        ProgramDefinition definition,
-        int memberIndex,
-        int nextMemberInHolderIndex,
-        IntList memberIndexTranslation,
-        int nextClassIndex) {
-      if (definition.isProgramMember()) {
-        assignment.setMember(memberIndex, definition.asProgramMember());
-      } else {
-        assert definition.isProgramClass();
-        assert !definition.asProgramClass().hasMethodsOrFields();
-        assignment.setEmptyMemberMatch(memberIndex);
-      }
-      findMatchingMember(
-          nextMemberInHolderIndex,
-          memberIndexTranslation,
-          definition.getContextClass(),
-          nextClassIndex);
+              fieldMember -> {
+                throw new Unimplemented();
+              },
+              methodMember -> {
+                holder.forEachProgramMethod(
+                    m -> {
+                      if (predicates.matchesMethod(methodMember, m)) {
+                        assignment.setMember(memberIndex, m);
+                        findMatchingMember(
+                            nextMemberInHolderIndex,
+                            memberIndexTranslation,
+                            holder,
+                            nextClassIndex);
+                      }
+                    });
+              });
     }
   }
 
@@ -353,6 +336,24 @@
       this.edge = edge;
       edge.getPreconditions().forEach(this::addPrecondition);
       edge.getConsequences().forEachTarget(this::addConsequence);
+      ListUtils.forEachWithIndex(
+          members,
+          (member, memberIndex) -> {
+            member
+                .getClassReference()
+                .matchClassItemReference(
+                    bindingReference -> {
+                      int classIndex = symbolToKey.getInt(bindingReference);
+                      classMembers.get(classIndex).add(memberIndex);
+                    },
+                    classItemPattern -> {
+                      // The member declares its own inline class so link it directly.
+                      IntArrayList memberList = new IntArrayList();
+                      memberList.add(memberIndex);
+                      classes.add(classItemPattern);
+                      classMembers.add(memberList);
+                    });
+          });
     }
 
     public static boolean isClassKeyReference(int keyRef) {
@@ -392,17 +393,14 @@
 
     private int defineItemPattern(KeepItemPattern item) {
       if (item.isClassItemPattern()) {
-        int classIndex = classes.size();
+        int key = classes.size();
         classes.add(item.asClassItemPattern());
         classMembers.add(new IntArrayList());
-        return encodeClassKey(classIndex);
-      } else {
-        int classIndex = defineItemReference(item.asMemberItemPattern().getClassReference());
-        int memberIndex = members.size();
-        members.add(item.asMemberItemPattern());
-        classMembers.get(classIndex).add(memberIndex);
-        return encodeMemberKey(memberIndex);
+        return encodeClassKey(key);
       }
+      int key = members.size();
+      members.add(item.asMemberItemPattern());
+      return encodeMemberKey(key);
     }
 
     public void addPrecondition(KeepCondition condition) {
diff --git a/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcherPredicates.java b/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcherPredicates.java
index 364a17f..45e8385 100644
--- a/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcherPredicates.java
+++ b/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcherPredicates.java
@@ -5,38 +5,25 @@
 package com.android.tools.r8.shaking.rules;
 
 import com.android.tools.r8.errors.Unimplemented;
-import com.android.tools.r8.graph.AccessFlags;
-import com.android.tools.r8.graph.DexAnnotation;
 import com.android.tools.r8.graph.DexAnnotationSet;
-import com.android.tools.r8.graph.DexEncodedField;
-import com.android.tools.r8.graph.DexEncodedMember;
-import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexItemFactory;
 import com.android.tools.r8.graph.DexProgramClass;
 import com.android.tools.r8.graph.DexString;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.DexTypeList;
-import com.android.tools.r8.graph.FieldAccessFlags;
 import com.android.tools.r8.graph.MethodAccessFlags;
-import com.android.tools.r8.keepanno.ast.AccessVisibility;
+import com.android.tools.r8.graph.ProgramMethod;
 import com.android.tools.r8.keepanno.ast.KeepArrayTypePattern;
 import com.android.tools.r8.keepanno.ast.KeepClassItemPattern;
-import com.android.tools.r8.keepanno.ast.KeepFieldAccessPattern;
-import com.android.tools.r8.keepanno.ast.KeepFieldPattern;
 import com.android.tools.r8.keepanno.ast.KeepInstanceOfPattern;
-import com.android.tools.r8.keepanno.ast.KeepMemberAccessPattern;
-import com.android.tools.r8.keepanno.ast.KeepMemberPattern;
 import com.android.tools.r8.keepanno.ast.KeepMethodAccessPattern;
 import com.android.tools.r8.keepanno.ast.KeepMethodParametersPattern;
 import com.android.tools.r8.keepanno.ast.KeepMethodPattern;
 import com.android.tools.r8.keepanno.ast.KeepMethodReturnTypePattern;
-import com.android.tools.r8.keepanno.ast.KeepPackagePattern;
 import com.android.tools.r8.keepanno.ast.KeepPrimitiveTypePattern;
 import com.android.tools.r8.keepanno.ast.KeepQualifiedClassNamePattern;
 import com.android.tools.r8.keepanno.ast.KeepStringPattern;
 import com.android.tools.r8.keepanno.ast.KeepTypePattern;
-import com.android.tools.r8.keepanno.ast.KeepUnqualfiedClassNamePattern;
-import com.android.tools.r8.keepanno.ast.ModifierPattern;
 import com.android.tools.r8.keepanno.ast.OptionalPattern;
 import java.util.List;
 
@@ -61,25 +48,7 @@
     if (pattern.isExact()) {
       return type.toDescriptorString().equals(pattern.getExactDescriptor());
     }
-    return matchesPackage(type.getPackageName(), pattern.getPackagePattern())
-        && matchesSimpleName(type.getSimpleName(), pattern.getNamePattern());
-  }
-
-  private boolean matchesPackage(String packageName, KeepPackagePattern pattern) {
-    if (pattern.isAny()) {
-      return true;
-    }
-    if (pattern.isTop() && packageName.equals("")) {
-      return true;
-    }
-    return packageName.equals(pattern.getExactPackageAsString());
-  }
-
-  public boolean matchesSimpleName(String simpleName, KeepUnqualfiedClassNamePattern pattern) {
-    if (pattern.isAny()) {
-      return true;
-    }
-    return pattern.asExact().getExactNameAsString().equals(simpleName);
+    throw new Unimplemented();
   }
 
   private boolean matchesInstanceOfPattern(
@@ -90,109 +59,30 @@
     throw new Unimplemented();
   }
 
-  public boolean matchesGeneralMember(DexEncodedMember<?, ?> member, KeepMemberPattern pattern) {
-    assert pattern.isGeneralMember();
-    if (pattern.isAllMembers()) {
+  public boolean matchesMethod(KeepMethodPattern methodPattern, ProgramMethod method) {
+    if (methodPattern.isAnyMethod()) {
       return true;
     }
-    return matchesAnnotatedBy(member.annotations(), pattern.getAnnotatedByPattern())
-        && matchesGeneralMemberAccess(member.getAccessFlags(), pattern.getAccessPattern());
+    return matchesName(method.getName(), methodPattern.getNamePattern().asStringPattern())
+        && matchesReturnType(method.getReturnType(), methodPattern.getReturnTypePattern())
+        && matchesParameters(method.getParameters(), methodPattern.getParametersPattern())
+        && matchesAnnotatedBy(method.getAnnotations(), methodPattern.getAnnotatedByPattern())
+        && matchesAccess(method.getAccessFlags(), methodPattern.getAccessPattern());
   }
 
-  public boolean matchesMethod(DexEncodedMethod method, KeepMethodPattern pattern) {
-    if (pattern.isAnyMethod()) {
-      return true;
-    }
-    return matchesName(method.getName(), pattern.getNamePattern().asStringPattern())
-        && matchesReturnType(method.getReturnType(), pattern.getReturnTypePattern())
-        && matchesParameters(method.getParameters(), pattern.getParametersPattern())
-        && matchesAnnotatedBy(method.annotations(), pattern.getAnnotatedByPattern())
-        && matchesMethodAccess(method.getAccessFlags(), pattern.getAccessPattern());
-  }
-
-  public boolean matchesField(DexEncodedField field, KeepFieldPattern pattern) {
-    if (pattern.isAnyField()) {
-      return true;
-    }
-    return matchesName(field.getName(), pattern.getNamePattern().asStringPattern())
-        && matchesType(field.getType(), pattern.getTypePattern().asType())
-        && matchesAnnotatedBy(field.annotations(), pattern.getAnnotatedByPattern())
-        && matchesFieldAccess(field.getAccessFlags(), pattern.getAccessPattern());
-  }
-
-  public boolean matchesGeneralMemberAccess(
-      AccessFlags<?> access, KeepMemberAccessPattern pattern) {
+  public boolean matchesAccess(MethodAccessFlags access, KeepMethodAccessPattern pattern) {
     if (pattern.isAny()) {
       return true;
     }
-    if (!pattern.isAnyVisibility() && !pattern.isVisibilityAllowed(getAccessVisibility(access))) {
-      return false;
-    }
-    return matchesModifier(access.isStatic(), pattern.getStaticPattern())
-        && matchesModifier(access.isFinal(), pattern.getFinalPattern())
-        && matchesModifier(access.isSynthetic(), pattern.getSyntheticPattern());
-  }
-
-  public boolean matchesMethodAccess(MethodAccessFlags access, KeepMethodAccessPattern pattern) {
-    if (pattern.isAny()) {
-      return true;
-    }
-    return matchesGeneralMemberAccess(access, pattern)
-        && matchesModifier(access.isSynchronized(), pattern.getSynchronizedPattern())
-        && matchesModifier(access.isBridge(), pattern.getBridgePattern())
-        && matchesModifier(access.isNative(), pattern.getNativePattern())
-        && matchesModifier(access.isAbstract(), pattern.getAbstractPattern())
-        && matchesModifier(access.isStrict(), pattern.getStrictFpPattern());
-  }
-
-  public boolean matchesFieldAccess(FieldAccessFlags access, KeepFieldAccessPattern pattern) {
-    if (pattern.isAny()) {
-      return true;
-    }
-    return matchesGeneralMemberAccess(access, pattern)
-        && matchesModifier(access.isVolatile(), pattern.getVolatilePattern())
-        && matchesModifier(access.isTransient(), pattern.getTransientPattern());
-  }
-
-  private boolean matchesModifier(boolean value, ModifierPattern pattern) {
-    return pattern.isAny() || value == pattern.isOnlyPositive();
-  }
-
-  private AccessVisibility getAccessVisibility(AccessFlags<?> accessFlags) {
-    if (accessFlags.isPublic()) {
-      return AccessVisibility.PUBLIC;
-    }
-    if (accessFlags.isProtected()) {
-      return AccessVisibility.PROTECTED;
-    }
-    if (accessFlags.isPackagePrivate()) {
-      return AccessVisibility.PACKAGE_PRIVATE;
-    }
-    assert accessFlags.isPrivate();
-    return AccessVisibility.PRIVATE;
+    throw new Unimplemented();
   }
 
   public boolean matchesAnnotatedBy(
       DexAnnotationSet annotations, OptionalPattern<KeepQualifiedClassNamePattern> pattern) {
     if (pattern.isAbsent()) {
-      // No pattern for annotations matches regardless of annotation content.
       return true;
     }
-    if (annotations.isEmpty()) {
-      // Fast-path if pattern is present but no annotations.
-      return false;
-    }
-    KeepQualifiedClassNamePattern classNamePattern = pattern.get();
-    if (classNamePattern.isAny()) {
-      // Fast-path the "any" case.
-      return true;
-    }
-    for (DexAnnotation annotation : annotations.getAnnotations()) {
-      if (matchesClassName(annotation.getAnnotationType(), classNamePattern)) {
-        return true;
-      }
-    }
-    return false;
+    throw new Unimplemented();
   }
 
   public boolean matchesParameters(DexTypeList parameters, KeepMethodParametersPattern pattern) {
diff --git a/src/test/java/com/android/tools/r8/keepanno/AnnotationPatternAnyRetentionTest.java b/src/test/java/com/android/tools/r8/keepanno/AnnotationPatternAnyRetentionTest.java
index 2dd3af2..31de01d 100644
--- a/src/test/java/com/android/tools/r8/keepanno/AnnotationPatternAnyRetentionTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/AnnotationPatternAnyRetentionTest.java
@@ -44,7 +44,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .setExcludedOuterClass(getClass())
         .run(TestClass.class)
diff --git a/src/test/java/com/android/tools/r8/keepanno/AnnotationPatternClassRetentionTest.java b/src/test/java/com/android/tools/r8/keepanno/AnnotationPatternClassRetentionTest.java
index af205e6..df1bee8 100644
--- a/src/test/java/com/android/tools/r8/keepanno/AnnotationPatternClassRetentionTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/AnnotationPatternClassRetentionTest.java
@@ -45,7 +45,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .setExcludedOuterClass(getClass())
         .run(TestClass.class)
diff --git a/src/test/java/com/android/tools/r8/keepanno/AnnotationPatternMultipleTest.java b/src/test/java/com/android/tools/r8/keepanno/AnnotationPatternMultipleTest.java
index af1e3b0..feafc7f 100644
--- a/src/test/java/com/android/tools/r8/keepanno/AnnotationPatternMultipleTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/AnnotationPatternMultipleTest.java
@@ -46,7 +46,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .setExcludedOuterClass(getClass())
         .run(TestClass.class)
diff --git a/src/test/java/com/android/tools/r8/keepanno/ArrayPatternsTest.java b/src/test/java/com/android/tools/r8/keepanno/ArrayPatternsTest.java
index 86bf2a5..2f1f572 100644
--- a/src/test/java/com/android/tools/r8/keepanno/ArrayPatternsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/ArrayPatternsTest.java
@@ -41,7 +41,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .setExcludedOuterClass(getClass())
         .run(TestClass.class)
diff --git a/src/test/java/com/android/tools/r8/keepanno/ClassAnnotatedByAnyAnnoPatternTest.java b/src/test/java/com/android/tools/r8/keepanno/ClassAnnotatedByAnyAnnoPatternTest.java
index 5c7237a..7f3840f 100644
--- a/src/test/java/com/android/tools/r8/keepanno/ClassAnnotatedByAnyAnnoPatternTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/ClassAnnotatedByAnyAnnoPatternTest.java
@@ -44,7 +44,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .setExcludedOuterClass(getClass())
         .run(TestClass.class)
diff --git a/src/test/java/com/android/tools/r8/keepanno/ClassAnnotatedByPatternsTest.java b/src/test/java/com/android/tools/r8/keepanno/ClassAnnotatedByPatternsTest.java
index ea21a44..6d0f966 100644
--- a/src/test/java/com/android/tools/r8/keepanno/ClassAnnotatedByPatternsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/ClassAnnotatedByPatternsTest.java
@@ -44,7 +44,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .setExcludedOuterClass(getClass())
         .run(TestClass.class)
diff --git a/src/test/java/com/android/tools/r8/keepanno/FieldPatternsTest.java b/src/test/java/com/android/tools/r8/keepanno/FieldPatternsTest.java
index 61fb54c..669d945 100644
--- a/src/test/java/com/android/tools/r8/keepanno/FieldPatternsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/FieldPatternsTest.java
@@ -38,7 +38,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .addKeepMainRule(TestClass.class)
         .setExcludedOuterClass(getClass())
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepAccessVisibilityFlagsTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepAccessVisibilityFlagsTest.java
index 6e41cc0..a9dec7d 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepAccessVisibilityFlagsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepAccessVisibilityFlagsTest.java
@@ -82,7 +82,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .addKeepMainRule(TestClass.class)
         .allowAccessModification()
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepAnnoTestBuilder.java b/src/test/java/com/android/tools/r8/keepanno/KeepAnnoTestBuilder.java
index 5e34061..1105bd3 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepAnnoTestBuilder.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepAnnoTestBuilder.java
@@ -113,8 +113,8 @@
     return applyIfPG(b -> b.addDontWarn(clazz));
   }
 
-  public KeepAnnoTestBuilder allowUnusedProguardConfigurationRules() {
-    return this;
+  public final KeepAnnoTestBuilder allowUnusedProguardConfigurationRules() {
+    return applyIfR8Current(R8TestBuilder::allowUnusedProguardConfigurationRules);
   }
 
   public final KeepAnnoTestBuilder allowAccessModification() {
@@ -170,7 +170,6 @@
     private List<Consumer<R8TestCompileResult>> compileResultConsumers = new ArrayList<>();
     private final boolean normalizeEdges;
     private final boolean extractRules;
-    private boolean enableNative = false;
 
     private R8NativeBuilder(KeepAnnoParameters params, TemporaryFolder temp) {
       super(params, temp);
@@ -190,25 +189,10 @@
     }
 
     @Override
-    public KeepAnnoTestBuilder allowUnusedProguardConfigurationRules() {
-      if (!enableNative) {
-        builder.allowUnusedProguardConfigurationRules();
-      }
-      return this;
-    }
-
-    @Override
     public KeepAnnoTestBuilder enableNativeInterpretation() {
       if (extractRules) {
         return this;
       }
-      enableNative = true;
-      // TODO(b/323816623): The compiler assumes that this is known prior to tracing.
-      //   We should update the compiler to always read annotations and only remove them after
-      //   initial tracing regardless of -keepattributes.
-      builder.addKeepRuntimeVisibleAnnotations();
-      builder.addKeepRuntimeInvisibleAnnotations();
-
       // This enables native interpretation of all keep annotations.
       builder.addOptionsModification(
           o -> {
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepBindingTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepBindingTest.java
index 18bc3d5..464ee91 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepBindingTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepBindingTest.java
@@ -37,7 +37,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .addKeepClassRules(A.class, B.class)
         .addKeepMainRule(TestClass.class)
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepClassApiTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepClassApiTest.java
index 8e73b21..4abe376 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepClassApiTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepClassApiTest.java
@@ -59,7 +59,6 @@
     assertTrue(parameters.isShrinker());
     Box<Path> lib = new Box<>();
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getLibraryClasses())
         .setExcludedOuterClass(getClass())
         .applyIfShrinker(b -> lib.set(b.compile().inspect(this::checkLibraryOutput).writeToZip()));
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepFieldValueApiTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepFieldValueApiTest.java
index f9cd926..9ac84d1 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepFieldValueApiTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepFieldValueApiTest.java
@@ -58,7 +58,6 @@
     assertTrue(parameters.isShrinker());
     Box<Path> lib = new Box<>();
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getLibraryClasses())
         .setExcludedOuterClass(getClass())
         .applyIfShrinker(b -> lib.set(b.compile().inspect(this::checkLibraryOutput).writeToZip()));
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarAnyClassTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarAnyClassTest.java
index 76e7a94..bf82204 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarAnyClassTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarAnyClassTest.java
@@ -35,7 +35,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .addKeepMainRule(TestClass.class)
         .setExcludedOuterClass(getClass())
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarSameClassTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarSameClassTest.java
index 6e287d6..0a2e16b 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarSameClassTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepFooIfBarSameClassTest.java
@@ -39,7 +39,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .addKeepMainRule(TestClass.class)
         .setExcludedOuterClass(getClass())
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepMembersAccessFlagsTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepMembersAccessFlagsTest.java
index 8d8b397..fe8eacd 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepMembersAccessFlagsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepMembersAccessFlagsTest.java
@@ -42,7 +42,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .addKeepMainRule(TestClass.class)
         .setExcludedOuterClass(getClass())
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepMembersApiTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepMembersApiTest.java
index 3ad549d..c6d3b7d 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepMembersApiTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepMembersApiTest.java
@@ -58,7 +58,6 @@
     assertTrue(parameters.isShrinker());
     Box<Path> lib = new Box<>();
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getLibraryClasses())
         .setExcludedOuterClass(getClass())
         .applyIfShrinker(b -> lib.set(b.compile().inspect(this::checkLibraryOutput).writeToZip()));
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepMethodsAccessFlagsTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepMethodsAccessFlagsTest.java
index 9dec3d5..0de2eaf 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepMethodsAccessFlagsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepMethodsAccessFlagsTest.java
@@ -41,7 +41,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .addKeepMainRule(TestClass.class)
         .setExcludedOuterClass(getClass())
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepMethodsEmptyAccessFlagsTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepMethodsEmptyAccessFlagsTest.java
index e1db615..cac4ddb 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepMethodsEmptyAccessFlagsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepMethodsEmptyAccessFlagsTest.java
@@ -40,7 +40,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .addKeepMainRule(TestClass.class)
         .setExcludedOuterClass(getClass())
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepStaticBindingTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepStaticBindingTest.java
index dca36c5..1fbe385 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepStaticBindingTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepStaticBindingTest.java
@@ -36,7 +36,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .setExcludedOuterClass(getClass())
         .run(TestClass.class)
diff --git a/src/test/java/com/android/tools/r8/keepanno/KeepUsedByReflectionAnnotationTest.java b/src/test/java/com/android/tools/r8/keepanno/KeepUsedByReflectionAnnotationTest.java
index 9190d30..0bc2417 100644
--- a/src/test/java/com/android/tools/r8/keepanno/KeepUsedByReflectionAnnotationTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/KeepUsedByReflectionAnnotationTest.java
@@ -41,7 +41,6 @@
   public void test() throws Exception {
     Class<?> mainClass = TestClass.class;
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .addKeepMainRule(mainClass)
         .setExcludedOuterClass(getClass())
@@ -54,7 +53,6 @@
   public void testNoRef() throws Exception {
     Class<?> mainClass = TestClassNoRef.class;
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .addKeepMainRule(mainClass)
         .allowUnusedProguardConfigurationRules()
diff --git a/src/test/java/com/android/tools/r8/keepanno/MembersAnnotatedByPatternsTest.java b/src/test/java/com/android/tools/r8/keepanno/MembersAnnotatedByPatternsTest.java
index 35c1494..52850da 100644
--- a/src/test/java/com/android/tools/r8/keepanno/MembersAnnotatedByPatternsTest.java
+++ b/src/test/java/com/android/tools/r8/keepanno/MembersAnnotatedByPatternsTest.java
@@ -47,7 +47,6 @@
   @Test
   public void test() throws Exception {
     testForKeepAnno(parameters)
-        .enableNativeInterpretation()
         .addProgramClasses(getInputClasses())
         .setExcludedOuterClass(getClass())
         .run(TestClass.class)