Revert "[ApiModel] Force specifying api level for definitions"

This reverts commit 0dcaf449747bb2f2af5e7d56d9a7d1fca561fcad.

Reason for revert: Cannot build

Change-Id: Ibe00868cd9c73d8058ad8ed0b83fc741a4445117
diff --git a/src/main/java/com/android/tools/r8/GenerateLintFiles.java b/src/main/java/com/android/tools/r8/GenerateLintFiles.java
index 68b9354..6c9025d 100644
--- a/src/main/java/com/android/tools/r8/GenerateLintFiles.java
+++ b/src/main/java/com/android/tools/r8/GenerateLintFiles.java
@@ -158,7 +158,6 @@
               .setGenericSignature(MethodTypeSignature.noSignature())
               .setCode(code)
               .setClassFileVersion(CfVersion.V1_6)
-              .disableAndroidApiLevelCheck()
               .build();
       if (method.isStatic() || method.isDirectMethod()) {
         directMethods.add(throwingMethod);
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 462c008..2ab471a 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -48,7 +48,7 @@
 import com.android.tools.r8.ir.desugar.BackportedMethodRewriter;
 import com.android.tools.r8.ir.desugar.CfClassSynthesizerDesugaringCollection;
 import com.android.tools.r8.ir.desugar.CfClassSynthesizerDesugaringEventConsumer;
-import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryRetargeterLibraryTypeSynthesizer;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryRetargeterLibraryTypeSynthesizor;
 import com.android.tools.r8.ir.desugar.itf.InterfaceMethodRewriter;
 import com.android.tools.r8.ir.desugar.records.RecordRewriter;
 import com.android.tools.r8.ir.optimize.AssertionsRewriter;
@@ -310,8 +310,8 @@
         MainDexListBuilder.checkForAssumedLibraryTypes(appView.appInfo());
       }
       if (!options.desugaredLibraryConfiguration.getRetargetCoreLibMember().isEmpty()) {
-        DesugaredLibraryRetargeterLibraryTypeSynthesizer.checkForAssumedLibraryTypes(appView);
-        DesugaredLibraryRetargeterLibraryTypeSynthesizer.amendLibraryWithRetargetedMembers(appView);
+        DesugaredLibraryRetargeterLibraryTypeSynthesizor.checkForAssumedLibraryTypes(appView);
+        DesugaredLibraryRetargeterLibraryTypeSynthesizor.amendLibraryWithRetargetedMembers(appView);
       }
       InterfaceMethodRewriter.checkForAssumedLibraryTypes(appView.appInfo(), options);
       BackportedMethodRewriter.registerAssumedLibraryTypes(options);
@@ -438,8 +438,6 @@
           annotationRemover.ensureValid().run(executorService);
           new GenericSignatureRewriter(appView, NamingLens.getIdentityLens(), genericContextBuilder)
               .run(appView.appInfo().classes(), executorService);
-
-          assert appView.checkForTesting(() -> allReferencesAssignedApiLevel(appViewWithLiveness));
         }
       } finally {
         timing.end();
@@ -890,8 +888,7 @@
   }
 
   private static boolean allReferencesAssignedApiLevel(AppView<?> appView) {
-    if (!appView.options().apiModelingOptions().checkAllApiReferencesAreSet
-        || appView.options().configurationDebugging) {
+    if (!appView.options().apiModelingOptions().checkAllApiReferencesAreSet) {
       return true;
     }
     // This will return false if we find anything in the library which is not modeled.
@@ -900,11 +897,12 @@
         .classes()
         .forEach(
             clazz -> {
-              assert clazz.getMembersApiReferenceLevel(appView) != AndroidApiLevel.NOT_SET
-                  : "Every member should have been analyzed";
-              if (!appView.options().apiModelingOptions().enableApiCallerIdentification) {
+              if (appView.options().apiModelingOptions().enableApiCallerIdentification) {
+                assert clazz.getMembersApiReferenceLevel(appView) != AndroidApiLevel.UNKNOWN
+                    : "Every member should have been analyzed";
+              } else {
                 assert clazz.getMembersApiReferenceLevel(appView) == AndroidApiLevel.UNKNOWN
-                    : "Every member should have level NOT_SET";
+                    : "Every member should have level UNKNOWN";
               }
             });
     return true;
diff --git a/src/main/java/com/android/tools/r8/dex/DexParser.java b/src/main/java/com/android/tools/r8/dex/DexParser.java
index 03c50c0..9336265 100644
--- a/src/main/java/com/android/tools/r8/dex/DexParser.java
+++ b/src/main/java/com/android/tools/r8/dex/DexParser.java
@@ -657,7 +657,6 @@
               .setGenericSignature(fieldTypeSignature)
               .setAnnotations(fieldAnnotations)
               .setStaticValue(staticValue)
-              .disableAndroidApiLevelCheck()
               .build();
     }
     return fields;
@@ -709,7 +708,6 @@
               .setAnnotations(methodAnnotations)
               .setParameterAnnotations(parameterAnnotationsIterator.getNextFor(method))
               .setCode(code)
-              .disableAndroidApiLevelCheck()
               .build();
     }
     return methods;
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedField.java b/src/main/java/com/android/tools/r8/graph/DexEncodedField.java
index 5cfbeeb..c89d8ed 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedField.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedField.java
@@ -59,9 +59,9 @@
       FieldTypeSignature genericSignature,
       DexAnnotationSet annotations,
       DexValue staticValue,
-      AndroidApiLevel apiLevel,
       boolean deprecated,
-      boolean d8R8Synthesized) {
+      boolean d8R8Synthesized,
+      AndroidApiLevel apiLevel) {
     super(field, annotations, d8R8Synthesized, apiLevel);
     this.accessFlags = accessFlags;
     this.staticValue = staticValue;
@@ -365,10 +365,6 @@
     private final boolean d8R8Synthesized;
     private Consumer<DexEncodedField> buildConsumer = ConsumerUtils.emptyConsumer();
 
-    // Checks to impose on the built method. They should always be active to start with and be
-    // lowered on the use site.
-    private boolean checkAndroidApiLevel = true;
-
     private Builder(boolean d8R8Synthesized) {
       this.d8R8Synthesized = d8R8Synthesized;
     }
@@ -452,17 +448,11 @@
       return this;
     }
 
-    public Builder disableAndroidApiLevelCheck() {
-      checkAndroidApiLevel = false;
-      return this;
-    }
-
     public DexEncodedField build() {
       assert field != null;
       assert accessFlags != null;
       assert genericSignature != null;
       assert annotations != null;
-      assert !checkAndroidApiLevel || apiLevel != AndroidApiLevel.NOT_SET;
       DexEncodedField dexEncodedField =
           new DexEncodedField(
               field,
@@ -470,9 +460,9 @@
               genericSignature,
               annotations,
               staticValue,
-              apiLevel,
               deprecated,
-              d8R8Synthesized);
+              d8R8Synthesized,
+              apiLevel);
       dexEncodedField.optimizationInfo = optimizationInfo;
       buildConsumer.accept(dexEncodedField);
       return dexEncodedField;
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index a153a6a..b6c7d02 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -11,7 +11,6 @@
 import static com.android.tools.r8.graph.DexEncodedMethod.CompilationState.PROCESSED_NOT_INLINING_CANDIDATE;
 import static com.android.tools.r8.graph.DexProgramClass.asProgramClassOrNull;
 import static com.android.tools.r8.kotlin.KotlinMetadataUtils.getNoKotlinInfo;
-import static com.android.tools.r8.utils.AndroidApiLevel.NOT_SET;
 import static com.android.tools.r8.utils.ConsumerUtils.emptyConsumer;
 
 import com.android.tools.r8.cf.CfVersion;
@@ -46,7 +45,6 @@
 import com.android.tools.r8.errors.InternalCompilerError;
 import com.android.tools.r8.errors.Unreachable;
 import com.android.tools.r8.graph.DexAnnotation.AnnotatedKind;
-import com.android.tools.r8.graph.DexEncodedMethod.CompilationState;
 import com.android.tools.r8.graph.GenericSignature.MethodTypeSignature;
 import com.android.tools.r8.ir.analysis.inlining.SimpleInliningConstraint;
 import com.android.tools.r8.ir.code.IRCode;
@@ -148,9 +146,9 @@
           ParameterAnnotationsList.empty(),
           null,
           false,
-          NOT_SET,
-          NOT_SET,
           null,
+          AndroidApiLevel.UNKNOWN,
+          AndroidApiLevel.UNKNOWN,
           false);
   public static final Int2ReferenceMap<DebugLocalInfo> NO_PARAMETER_INFO =
       new Int2ReferenceArrayMap<>(0);
@@ -240,9 +238,9 @@
       ParameterAnnotationsList parameterAnnotationsList,
       Code code,
       boolean d8R8Synthesized,
+      CfVersion classFileVersion,
       AndroidApiLevel apiLevelForDefinition,
       AndroidApiLevel apiLevelForCode,
-      CfVersion classFileVersion,
       boolean deprecated) {
     super(method, annotations, d8R8Synthesized, apiLevelForDefinition);
     this.accessFlags = accessFlags;
@@ -255,8 +253,7 @@
     assert accessFlags != null;
     assert code == null || !shouldNotHaveCode();
     assert parameterAnnotationsList != null;
-    assert apiLevelForDefinition != null;
-    assert apiLevelForCode != null;
+    assert apiLevelForCode != null && apiLevelForDefinition != null;
   }
 
   public static DexEncodedMethod toMethodDefinitionOrNull(DexClassAndMethod method) {
@@ -1273,8 +1270,6 @@
                 // Holder is companion class, or retarget method, not an interface.
                 .setStaticTarget(forwardMethod, false)
                 .build())
-        .setApiLevelForDefinition(target.getDefinition().getApiLevelForDefinition())
-        .setApiLevelForCode(target.getDefinition().getApiLevelForCode())
         .build();
   }
 
@@ -1363,7 +1358,7 @@
 
   @Override
   public AndroidApiLevel getApiLevel() {
-    return (shouldNotHaveCode() ? AndroidApiLevel.B : getApiLevelForCode())
+    return (isAbstract() ? AndroidApiLevel.B : getApiLevelForCode())
         .max(getApiLevelForDefinition());
   }
 
@@ -1446,8 +1441,8 @@
     private MethodOptimizationInfo optimizationInfo = DefaultMethodOptimizationInfo.getInstance();
     private KotlinMethodLevelInfo kotlinInfo = getNoKotlinInfo();
     private CfVersion classFileVersion = null;
-    private AndroidApiLevel apiLevelForDefinition = NOT_SET;
-    private AndroidApiLevel apiLevelForCode = NOT_SET;
+    private AndroidApiLevel apiLevelForDefinition = AndroidApiLevel.UNKNOWN;
+    private AndroidApiLevel apiLevelForCode = AndroidApiLevel.UNKNOWN;
     private final boolean d8R8Synthesized;
     private boolean deprecated = false;
 
@@ -1455,7 +1450,6 @@
     // lowered on the use site.
     private boolean checkMethodNotNull = true;
     private boolean checkParameterAnnotationList = true;
-    private boolean checkAndroidApiLevels = true;
 
     private Consumer<DexEncodedMethod> buildConsumer = ConsumerUtils.emptyConsumer();
 
@@ -1693,11 +1687,6 @@
       return this;
     }
 
-    public Builder disableAndroidApiLevelCheck() {
-      checkAndroidApiLevels = false;
-      return this;
-    }
-
     public DexEncodedMethod build() {
       assert !checkMethodNotNull || method != null;
       assert accessFlags != null;
@@ -1706,8 +1695,8 @@
       assert !checkParameterAnnotationList
           || parameterAnnotations.isEmpty()
           || parameterAnnotations.size() == method.proto.parameters.size();
-      assert !checkAndroidApiLevels || apiLevelForDefinition != null;
-      assert !checkAndroidApiLevels || apiLevelForCode != null;
+      assert apiLevelForDefinition != null;
+      assert apiLevelForCode != null;
       DexEncodedMethod result =
           new DexEncodedMethod(
               method,
@@ -1717,9 +1706,9 @@
               parameterAnnotations,
               code,
               d8R8Synthesized,
+              classFileVersion,
               apiLevelForDefinition,
               apiLevelForCode,
-              classFileVersion,
               deprecated);
       result.setKotlinMemberInfo(kotlinInfo);
       result.compilationState = compilationState;
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 4c6c165..2164d54 100644
--- a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
+++ b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
@@ -38,6 +38,7 @@
 import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.shaking.ProguardKeepAttributes;
 import com.android.tools.r8.synthesis.SyntheticMarker;
+import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.AsmUtils;
 import com.android.tools.r8.utils.DescriptorUtils;
 import com.android.tools.r8.utils.ExceptionUtils;
@@ -674,7 +675,6 @@
                 .setAnnotations(annotationSet)
                 .setStaticValue(staticValue)
                 .setDeprecated(AsmUtils.isDeprecated(access))
-                .disableAndroidApiLevelCheck()
                 .build();
         if (flags.isStatic()) {
           parent.staticFields.add(field);
@@ -911,9 +911,10 @@
               .setParameterAnnotations(parameterAnnotationsList)
               .setCode(code)
               .setClassFileVersion(parent.version)
+              .setApiLevelForDefinition(AndroidApiLevel.UNKNOWN)
+              .setApiLevelForCode(AndroidApiLevel.UNKNOWN)
               .setDeprecated(deprecated)
               .disableParameterAnnotationListCheck()
-              .disableAndroidApiLevelCheck()
               .build();
       Wrapper<DexMethod> signature = MethodSignatureEquivalence.get().wrap(method);
       if (parent.methodSignatures.add(signature)) {
diff --git a/src/main/java/com/android/tools/r8/graph/analysis/ApiModelAnalysis.java b/src/main/java/com/android/tools/r8/graph/analysis/ApiModelAnalysis.java
index 85c63ad..9da5368 100644
--- a/src/main/java/com/android/tools/r8/graph/analysis/ApiModelAnalysis.java
+++ b/src/main/java/com/android/tools/r8/graph/analysis/ApiModelAnalysis.java
@@ -7,7 +7,6 @@
 import com.android.tools.r8.androidapi.AndroidApiReferenceLevelCache;
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexClassAndMember;
-import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.LookupTarget;
 import com.android.tools.r8.graph.ProgramDefinition;
 import com.android.tools.r8.graph.ProgramField;
@@ -48,12 +47,7 @@
           .accept(method.getMethodReference(), registry.getMaxApiReferenceLevel());
     }
     computeApiLevelForDefinition(method);
-    method
-        .getDefinition()
-        .setApiLevelForCode(
-            appView.options().apiModelingOptions().enableApiCallerIdentification
-                ? registry.getMaxApiReferenceLevel()
-                : AndroidApiLevel.UNKNOWN);
+    method.getDefinition().setApiLevelForCode(registry.getMaxApiReferenceLevel());
   }
 
   @Override
@@ -75,17 +69,7 @@
         });
   }
 
-  @Override
-  public void notifyFailedMethodResolutionTarget(DexEncodedMethod method) {
-    // We may not trace into failed resolution targets.
-    method.setApiLevelForCode(AndroidApiLevel.UNKNOWN);
-  }
-
   private void computeApiLevelForDefinition(DexClassAndMember<?, ?> member) {
-    if (!appView.options().apiModelingOptions().enableApiCallerIdentification) {
-      member.getDefinition().setApiLevelForDefinition(AndroidApiLevel.UNKNOWN);
-      return;
-    }
     member
         .getDefinition()
         .setApiLevelForDefinition(
diff --git a/src/main/java/com/android/tools/r8/graph/analysis/EnqueuerAnalysis.java b/src/main/java/com/android/tools/r8/graph/analysis/EnqueuerAnalysis.java
index ceb7e92..0610c55 100644
--- a/src/main/java/com/android/tools/r8/graph/analysis/EnqueuerAnalysis.java
+++ b/src/main/java/com/android/tools/r8/graph/analysis/EnqueuerAnalysis.java
@@ -4,7 +4,6 @@
 
 package com.android.tools.r8.graph.analysis;
 
-import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexProgramClass;
 import com.android.tools.r8.graph.LookupTarget;
 import com.android.tools.r8.graph.ProgramDefinition;
@@ -38,8 +37,6 @@
 
   public void notifyMarkVirtualDispatchTargetAsLive(LookupTarget target) {}
 
-  public void notifyFailedMethodResolutionTarget(DexEncodedMethod method) {}
-
   /**
    * Called when the Enqueuer reaches a fixpoint. This may happen multiple times, since each
    * analysis may enqueue items into the worklist upon the fixpoint using {@param worklist}.
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java b/src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java
index 1e393aa..a0d130d 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java
@@ -6,7 +6,7 @@
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexProgramClass;
 import com.android.tools.r8.graph.ProgramMethod;
-import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryAPICallbackSynthesizer;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryAPICallbackSynthesizor;
 import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryRetargeterPostProcessor;
 import com.android.tools.r8.ir.desugar.desugaredlibrary.RetargetingInfo;
 import com.android.tools.r8.ir.desugar.itf.InterfaceMethodProcessorFacade;
@@ -64,9 +64,9 @@
       if (interfaceMethodProcessorFacade != null) {
         desugarings.add(interfaceMethodProcessorFacade);
       }
-      DesugaredLibraryAPICallbackSynthesizer apiCallbackSynthesizor =
+      DesugaredLibraryAPICallbackSynthesizor apiCallbackSynthesizor =
           appView.rewritePrefix.isRewriting()
-              ? new DesugaredLibraryAPICallbackSynthesizer(appView)
+              ? new DesugaredLibraryAPICallbackSynthesizor(appView)
               : null;
       // At this point the desugaredLibraryAPIConverter is required to be last to generate
       // call-backs on the forwarding methods.
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 0d0dd97..a18d9b9 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
@@ -175,8 +175,6 @@
             .setParameterAnnotations(
                 methodDefinition.parameterAnnotationsList.keepIf(Predicates.alwaysTrue()))
             .setCode(forwardMethodBuilder.build())
-            .setApiLevelForDefinition(methodDefinition.getApiLevelForDefinition())
-            .setApiLevelForCode(methodDefinition.getApiLevelForCode())
             .build();
     // Optimize to generate DexCode instead of CfCode.
     ProgramMethod programMethod = new ProgramMethod(methodHolder, newVirtualMethod);
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
index c2d95ca..c7f5ec8 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
@@ -36,6 +36,7 @@
 import com.android.tools.r8.ir.optimize.info.OptimizationFeedback;
 import com.android.tools.r8.ir.optimize.info.OptimizationFeedbackSimple;
 import com.android.tools.r8.synthesis.SyntheticProgramClassBuilder;
+import com.android.tools.r8.utils.AndroidApiLevel;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -160,8 +161,6 @@
                 MethodAccessFlags.fromSharedAccessFlags(
                     Constants.ACC_PUBLIC | Constants.ACC_FINAL, false))
             .setCode(LambdaMainMethodSourceCode.build(this, mainMethod))
-            // The api level is computed when tracing.
-            .disableAndroidApiLevelCheck()
             .build());
 
     // Synthesize bridge methods.
@@ -179,8 +178,6 @@
                           | Constants.ACC_BRIDGE,
                       false))
               .setCode(LambdaBridgeMethodSourceCode.build(this, bridgeMethod, mainMethod))
-              // The api level is computed when tracing.
-              .disableAndroidApiLevelCheck()
               .build());
     }
     builder.setVirtualMethods(methods);
@@ -201,8 +198,6 @@
             .setMethod(constructor)
             .setAccessFlags(accessFlags)
             .setCode(LambdaConstructorSourceCode.build(this))
-            // The api level is computed when tracing.
-            .disableAndroidApiLevelCheck()
             .build());
 
     // Class constructor for stateless lambda classes.
@@ -214,8 +209,6 @@
                   MethodAccessFlags.fromSharedAccessFlags(
                       Constants.ACC_SYNTHETIC | Constants.ACC_STATIC, true))
               .setCode(LambdaClassConstructorSourceCode.build(this))
-              // The api level is computed when tracing.
-              .disableAndroidApiLevelCheck()
               .build());
       feedback.classInitializerMayBePostponed(methods.get(1));
     }
@@ -233,7 +226,7 @@
               .setField(getCaptureField(i))
               .setAccessFlags(FieldAccessFlags.createPublicFinalSynthetic())
               // The api level is computed when tracing.
-              .disableAndroidApiLevelCheck()
+              .setApiLevel(AndroidApiLevel.UNKNOWN)
               .build());
     }
     builder.setInstanceFields(fields);
@@ -256,7 +249,7 @@
                               | Constants.ACC_STATIC))
                   .setStaticValue(DexValueNull.NULL)
                   // The api level is computed when tracing.
-                  .disableAndroidApiLevelCheck()
+                  .setApiLevel(AndroidApiLevel.UNKNOWN)
                   .build()));
     }
   }
@@ -571,8 +564,6 @@
                             .setAnnotations(encodedMethod.annotations())
                             .setParameterAnnotations(encodedMethod.parameterAnnotationsList)
                             .setCode(encodedMethod.getCode())
-                            .setApiLevelForDefinition(encodedMethod.getApiLevelForDefinition())
-                            .setApiLevelForCode(encodedMethod.getApiLevelForCode())
                             .build();
                     newMethod.copyMetadata(encodedMethod);
                     forcefullyMovedLambdaMethodConsumer.acceptForcefullyMovedLambdaMethod(
@@ -656,8 +647,6 @@
                             .setAnnotations(encodedMethod.annotations())
                             .setParameterAnnotations(encodedMethod.parameterAnnotationsList)
                             .setCode(encodedMethod.getCode())
-                            .setApiLevelForDefinition(encodedMethod.getApiLevelForDefinition())
-                            .setApiLevelForCode(encodedMethod.getApiLevelForCode())
                             .build();
                     newMethod.copyMetadata(encodedMethod);
                     forcefullyMovedLambdaMethodConsumer.acceptForcefullyMovedLambdaMethod(
@@ -719,8 +708,6 @@
                   .setMethod(callTarget)
                   .setAccessFlags(MethodAccessFlags.createPublicStaticSynthetic())
                   .setCode(AccessorMethodSourceCode.build(LambdaClass.this, callTarget))
-                  // The api level is computed when tracing.
-                  .disableAndroidApiLevelCheck()
                   .build());
       accessorClass.addDirectMethod(accessorMethod.getDefinition());
       if (appView.options().isDesugaredLibraryCompilation()
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/constantdynamic/ConstantDynamicClass.java b/src/main/java/com/android/tools/r8/ir/desugar/constantdynamic/ConstantDynamicClass.java
index 4015912..22654d6 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/constantdynamic/ConstantDynamicClass.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/constantdynamic/ConstantDynamicClass.java
@@ -3,7 +3,6 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.ir.desugar.constantdynamic;
 
-import static com.android.tools.r8.utils.AndroidApiLevel.minApiLevelIfEnabledOrUnknown;
 import static org.objectweb.asm.Opcodes.GETSTATIC;
 import static org.objectweb.asm.Opcodes.INVOKESTATIC;
 import static org.objectweb.asm.Opcodes.PUTSTATIC;
@@ -128,12 +127,12 @@
             DexEncodedField.syntheticBuilder()
                 .setField(this.initializedValueField)
                 .setAccessFlags(FieldAccessFlags.createPrivateStaticSynthetic())
-                .setApiLevel(minApiLevelIfEnabledOrUnknown(appView))
+                .setApiLevel(AndroidApiLevel.minApiLevelIfEnabledOrUnknown(appView))
                 .build(),
             DexEncodedField.syntheticBuilder()
                 .setField(this.constantValueField)
                 .setAccessFlags(FieldAccessFlags.createPrivateStaticSynthetic())
-                .setApiLevel(minApiLevelIfEnabledOrUnknown(appView))
+                .setApiLevel(AndroidApiLevel.minApiLevelIfEnabledOrUnknown(appView))
                 .build()));
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryAPICallbackSynthesizer.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryAPICallbackSynthesizor.java
similarity index 98%
rename from src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryAPICallbackSynthesizer.java
rename to src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryAPICallbackSynthesizor.java
index 92d7b92..3e0143a 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryAPICallbackSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryAPICallbackSynthesizor.java
@@ -30,7 +30,7 @@
 import java.util.Set;
 import java.util.concurrent.ExecutorService;
 
-public class DesugaredLibraryAPICallbackSynthesizer implements CfPostProcessingDesugaring {
+public class DesugaredLibraryAPICallbackSynthesizor implements CfPostProcessingDesugaring {
 
   private final AppView<?> appView;
   private final DexItemFactory factory;
@@ -38,7 +38,7 @@
   private final DesugaredLibraryWrapperSynthesizer wrapperSynthesizor;
   private final Set<DexMethod> trackedCallBackAPIs;
 
-  public DesugaredLibraryAPICallbackSynthesizer(AppView<?> appView) {
+  public DesugaredLibraryAPICallbackSynthesizor(AppView<?> appView) {
     this.appView = appView;
     this.factory = appView.dexItemFactory();
     this.wrapperSynthesizor = new DesugaredLibraryWrapperSynthesizer(appView);
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterLibraryTypeSynthesizer.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterLibraryTypeSynthesizor.java
similarity index 97%
rename from src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterLibraryTypeSynthesizer.java
rename to src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterLibraryTypeSynthesizor.java
index faa5857..9e50613 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterLibraryTypeSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterLibraryTypeSynthesizor.java
@@ -36,7 +36,7 @@
 import java.util.Set;
 import java.util.TreeSet;
 
-public class DesugaredLibraryRetargeterLibraryTypeSynthesizer {
+public class DesugaredLibraryRetargeterLibraryTypeSynthesizor {
 
   public static void checkForAssumedLibraryTypes(AppView<?> appView) {
     Map<DexString, Map<DexType, DexType>> retargetCoreLibMember =
@@ -144,7 +144,6 @@
                               MethodAccessFlags.fromCfAccessFlags(
                                   Constants.ACC_PUBLIC | Constants.ACC_STATIC, false))
                           .setCode(null)
-                          .setApiLevelForDefinition(method.getApiLevelForDefinition())
                           .build());
             }
           });
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterPostProcessor.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterPostProcessor.java
index c268bfd..b6200cb 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterPostProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterPostProcessor.java
@@ -133,7 +133,8 @@
   }
 
   private DexEncodedMethod createForwardingMethod(DexClassAndMethod target, DexClass clazz) {
-    // NOTE: Never add a forwarding method to methods of classes unknown or coming from android.jar
+    // NOTE: Never add a forwarding method to methods of classes unknown or coming from
+    // android.jar
     // even if this results in invalid code, these classes are never desugared.
     // In desugared library, emulated interface methods can be overridden by retarget lib members.
     DexMethod forwardMethod =
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java
index 4feafe3..9bc1a8e 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java
@@ -4,8 +4,6 @@
 
 package com.android.tools.r8.ir.desugar.desugaredlibrary;
 
-import static com.android.tools.r8.utils.AndroidApiLevel.NOT_SET;
-
 import com.android.tools.r8.dex.Constants;
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.CfCode;
@@ -563,8 +561,6 @@
         .setMethod(methodToInstall)
         .setAccessFlags(newFlags)
         .setCode(code)
-        .setApiLevelForDefinition(template.getApiLevelForDefinition())
-        .setApiLevelForCode(code == null ? NOT_SET : template.getApiLevelForCode())
         .build();
   }
 
@@ -624,8 +620,6 @@
     return DexEncodedField.syntheticBuilder()
         .setField(field)
         .setAccessFlags(fieldAccessFlags)
-        // The api level is computed when tracing.
-        .disableAndroidApiLevelCheck()
         .build();
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/itf/ClassProcessor.java b/src/main/java/com/android/tools/r8/ir/desugar/itf/ClassProcessor.java
index d32b3d3..2b8e3c7 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/itf/ClassProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/itf/ClassProcessor.java
@@ -4,8 +4,6 @@
 
 package com.android.tools.r8.ir.desugar.itf;
 
-import static com.android.tools.r8.utils.AndroidApiLevel.minApiLevelIfEnabledOrUnknown;
-
 import com.android.tools.r8.cf.code.CfInvoke;
 import com.android.tools.r8.cf.code.CfNew;
 import com.android.tools.r8.cf.code.CfStackInstruction;
@@ -804,8 +802,6 @@
             .setAccessFlags(accessFlags)
             .setCode(
                 createExceptionThrowingCfCode(newMethod, accessFlags, errorType, dexItemFactory))
-            .setApiLevelForDefinition(minApiLevelIfEnabledOrUnknown(appView))
-            .setApiLevelForCode(minApiLevelIfEnabledOrUnknown(appView))
             .build();
     addSyntheticMethod(clazz.asProgramClass(), newEncodedMethod);
   }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
index bb1a427..a2a2bf9 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
@@ -4,7 +4,6 @@
 
 package com.android.tools.r8.ir.desugar.itf;
 
-
 import com.android.tools.r8.cf.CfVersion;
 import com.android.tools.r8.cf.code.CfFieldInstruction;
 import com.android.tools.r8.cf.code.CfInitClass;
@@ -460,8 +459,6 @@
         .setAccessFlags(
             FieldAccessFlags.builder().setPackagePrivate().setStatic().setSynthetic().build())
         .setStaticValue(DexValueInt.DEFAULT)
-        // The api level is computed when tracing.
-        .disableAndroidApiLevelCheck()
         .build();
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/records/RecordRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/records/RecordRewriter.java
index 294dbb8..627f8af 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/records/RecordRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/records/RecordRewriter.java
@@ -290,8 +290,6 @@
             .setMethod(method)
             .setAccessFlags(methodAccessFlags)
             .setCode(null)
-            // Will be traced by the enqueuer.
-            .disableAndroidApiLevelCheck()
             .build();
     encodedMethod.setCode(provider.generateCfCode(), appView);
     return new ProgramMethod(clazz, encodedMethod);
@@ -589,8 +587,6 @@
             .setMethod(factory.recordMembers.init)
             .setAccessFlags(methodAccessFlags)
             .setCode(null)
-            // Will be traced by the enqueuer.
-            .disableAndroidApiLevelCheck()
             .build();
     init.setCode(
         new CallObjectInitCfCodeProvider(appView, factory.recordTagType).generateCfCode(), appView);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/UtilityMethodsForCodeOptimizations.java b/src/main/java/com/android/tools/r8/ir/optimize/UtilityMethodsForCodeOptimizations.java
index 71f01da..2b15739 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/UtilityMethodsForCodeOptimizations.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/UtilityMethodsForCodeOptimizations.java
@@ -4,8 +4,6 @@
 
 package com.android.tools.r8.ir.optimize;
 
-import static com.android.tools.r8.utils.AndroidApiLevel.minApiLevelIfEnabledOrUnknown;
-
 import com.android.tools.r8.cf.CfVersion;
 import com.android.tools.r8.contexts.CompilationContext.MethodProcessingContext;
 import com.android.tools.r8.contexts.CompilationContext.UniqueContext;
@@ -72,8 +70,6 @@
                 builder
                     .setAccessFlags(MethodAccessFlags.createPublicStaticSynthetic())
                     .setClassFileVersion(CfVersion.V1_8)
-                    .setApiLevelForDefinition(minApiLevelIfEnabledOrUnknown(appView))
-                    .setApiLevelForCode(minApiLevelIfEnabledOrUnknown(appView))
                     .setCode(
                         method -> getThrowClassCastExceptionIfNotNullCodeTemplate(method, options))
                     .setProto(proto));
@@ -102,8 +98,6 @@
                 builder
                     .setAccessFlags(MethodAccessFlags.createPublicStaticSynthetic())
                     .setClassFileVersion(CfVersion.V1_8)
-                    .setApiLevelForDefinition(minApiLevelIfEnabledOrUnknown(appView))
-                    .setApiLevelForCode(minApiLevelIfEnabledOrUnknown(appView))
                     .setCode(method -> getThrowIllegalAccessErrorCodeTemplate(method, options))
                     .setProto(proto));
     return new UtilityMethodForCodeOptimizations(syntheticMethod);
@@ -130,8 +124,6 @@
                 builder
                     .setAccessFlags(MethodAccessFlags.createPublicStaticSynthetic())
                     .setClassFileVersion(CfVersion.V1_8)
-                    .setApiLevelForDefinition(minApiLevelIfEnabledOrUnknown(appView))
-                    .setApiLevelForCode(minApiLevelIfEnabledOrUnknown(appView))
                     .setCode(
                         method -> getThrowIncompatibleClassChangeErrorCodeTemplate(method, options))
                     .setProto(proto));
@@ -160,8 +152,6 @@
                 builder
                     .setAccessFlags(MethodAccessFlags.createPublicStaticSynthetic())
                     .setClassFileVersion(CfVersion.V1_8)
-                    .setApiLevelForDefinition(minApiLevelIfEnabledOrUnknown(appView))
-                    .setApiLevelForCode(minApiLevelIfEnabledOrUnknown(appView))
                     .setCode(method -> getThrowNoSuchMethodErrorCodeTemplate(method, options))
                     .setProto(proto));
     return new UtilityMethodForCodeOptimizations(syntheticMethod);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryFieldSynthesis.java b/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryFieldSynthesis.java
index 27fa69a..2c012f0 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryFieldSynthesis.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryFieldSynthesis.java
@@ -5,7 +5,6 @@
 package com.android.tools.r8.ir.optimize.library;
 
 import static com.android.tools.r8.graph.DexLibraryClass.asLibraryClassOrNull;
-import static com.android.tools.r8.utils.AndroidApiLevel.minApiLevelIfEnabledOrUnknown;
 
 import com.android.tools.r8.dex.Constants;
 import com.android.tools.r8.graph.AppView;
@@ -39,9 +38,6 @@
                       .setAccessFlags(
                           FieldAccessFlags.fromCfAccessFlags(
                               Constants.ACC_PRIVATE | Constants.ACC_FINAL))
-                      .setApiLevel(minApiLevelIfEnabledOrUnknown(appView))
-                      // Will be traced by the enqueuer.
-                      .disableAndroidApiLevelCheck()
                       .build());
             }
           });
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index a12eff1..895e610 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -3051,8 +3051,6 @@
     DexClassAndMethod target = resolution.lookupInvokeSuperTarget(from.getHolder(), appInfo);
     if (target == null) {
       failedMethodResolutionTargets.add(resolution.getResolvedMethod().getReference());
-      analyses.forEach(
-          analyses -> analyses.notifyFailedMethodResolutionTarget(resolution.getResolvedMethod()));
       return;
     }
 
@@ -3119,7 +3117,9 @@
         && appView.options().getProguardConfiguration().getKeepAttributes().signature) {
       registerAnalysis(new GenericSignatureEnqueuerAnalysis(enqueuerDefinitionSupplier));
     }
-    registerAnalysis(new ApiModelAnalysis(appView, apiReferenceLevelCache));
+    if (appView.options().apiModelingOptions().enableApiCallerIdentification) {
+      registerAnalysis(new ApiModelAnalysis(appView, apiReferenceLevelCache));
+    }
 
     // Transfer the minimum keep info from the root set into the Enqueuer state.
     includeMinimumKeepInfo(rootSet);
diff --git a/src/main/java/com/android/tools/r8/shaking/TreePruner.java b/src/main/java/com/android/tools/r8/shaking/TreePruner.java
index 43d2d16..276d737 100644
--- a/src/main/java/com/android/tools/r8/shaking/TreePruner.java
+++ b/src/main/java/com/android/tools/r8/shaking/TreePruner.java
@@ -23,7 +23,6 @@
 import com.android.tools.r8.ir.optimize.info.OptimizationFeedback.OptimizationInfoFixer;
 import com.android.tools.r8.ir.optimize.info.OptimizationFeedbackSimple;
 import com.android.tools.r8.logging.Log;
-import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.ExceptionUtils;
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.IterableUtils;
@@ -334,11 +333,6 @@
         // Private methods and static methods can only be targeted yet non-live as the result of
         // an invalid invoke. They will not actually be called at runtime but we have to keep them
         // as non-abstract (see above) to produce the same failure mode.
-        if (!allowAbstract) {
-          // If the method was not marked as live and we cannot make it abstract, set the api level
-          // to be min or unknown.
-          method.setApiLevelForCode(AndroidApiLevel.minApiLevelIfEnabledOrUnknown(appView));
-        }
         reachableMethods.add(
             allowAbstract ? method.toAbstractMethod() : method.toEmptyThrowingMethod(options));
       } else {
diff --git a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
index 8128db2..6e06948 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -1449,8 +1449,8 @@
               .setClassFileVersion(classFileVersion)
               .setApiLevelForDefinition(method.getApiLevelForDefinition())
               .setApiLevelForCode(method.getApiLevelForDefinition())
-              .setIsLibraryMethodOverride(method.isLibraryMethodOverride())
               .build();
+      bridge.setLibraryMethodOverride(method.isLibraryMethodOverride());
       if (method.accessFlags.isPromotedToPublic()) {
         // The bridge is now the public method serving the role of the original method, and should
         // reflect that this method was publicized.
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java
index e867c59..0e45bd8 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java
@@ -16,6 +16,7 @@
 import com.android.tools.r8.graph.MethodAccessFlags;
 import com.android.tools.r8.graph.ParameterAnnotationsList;
 import com.android.tools.r8.synthesis.SyntheticNaming.SyntheticKind;
+import com.android.tools.r8.utils.AndroidApiLevel;
 import java.util.function.Consumer;
 
 public class SyntheticMethodBuilder {
@@ -115,8 +116,8 @@
             .setParameterAnnotations(parameterAnnotationsList)
             .setCode(code)
             .setClassFileVersion(classFileVersion)
-            // TODO(b/188388130): This should pass in api level directly.
-            .disableAndroidApiLevelCheck()
+            .setApiLevelForDefinition(AndroidApiLevel.UNKNOWN)
+            .setApiLevelForCode(AndroidApiLevel.UNKNOWN)
             .build();
     assert isValidSyntheticMethod(method, syntheticKind);
     if (onBuildConsumer != null) {
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java b/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
index c2f78cf..e127d6c 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
@@ -42,8 +42,7 @@
   Q(29),
   R(30),
   S(31),
-  UNKNOWN(10000),
-  NOT_SET(10001);
+  UNKNOWN(10000);
 
   // When updating LATEST and a new version goes stable, add a new api-versions.xml to third_party
   // and update the version and generated jar in AndroidApiDatabaseBuilderGeneratorTest.
@@ -78,9 +77,8 @@
   }
 
   public static AndroidApiLevel minApiLevelIfEnabledOrUnknown(AppView<?> appView) {
-    InternalOptions options = appView.options();
-    return options.apiModelingOptions().enableApiCallerIdentification
-        ? options.minApiLevel
+    return appView.options().apiModelingOptions().enableApiCallerIdentification
+        ? appView.options().minApiLevel
         : UNKNOWN;
   }
 
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index ec57f95..a457e50 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -869,7 +869,6 @@
       case J_MR2:
       case K_WATCH:
       case UNKNOWN:
-      case NOT_SET:
         return false;
       default:
         return true;
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java
index 905529a..5e1b8c0 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java
@@ -126,7 +126,7 @@
             .parse(StringResource.fromFile(ToolHelper.getDesugarLibJsonForTesting()));
 
     for (AndroidApiLevel apiLevel : AndroidApiLevel.values()) {
-      if (apiLevel == AndroidApiLevel.UNKNOWN || apiLevel == AndroidApiLevel.NOT_SET) {
+      if (apiLevel == AndroidApiLevel.UNKNOWN) {
         continue;
       }
       Path compileApiLevelDirectory = directory.resolve("compile_api_level_" + apiLevel.getLevel());
diff --git a/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java b/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java
index ce5a517..afc7a62 100644
--- a/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java
+++ b/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java
@@ -156,7 +156,6 @@
             .setAccessFlags(flags)
             .setCode(code)
             .disableMethodNotNullCheck()
-            .disableAndroidApiLevelCheck()
             .build();
     return new JumboStringRewriter(method, string, factory).rewrite();
   }
diff --git a/src/test/java/com/android/tools/r8/ir/conversion/CallGraphTestBase.java b/src/test/java/com/android/tools/r8/ir/conversion/CallGraphTestBase.java
index a24f51f..d8e2db4 100644
--- a/src/test/java/com/android/tools/r8/ir/conversion/CallGraphTestBase.java
+++ b/src/test/java/com/android/tools/r8/ir/conversion/CallGraphTestBase.java
@@ -55,7 +55,6 @@
                 .setMethod(signature)
                 .setAccessFlags(MethodAccessFlags.fromDexAccessFlags(0))
                 .setCode(null)
-                .disableAndroidApiLevelCheck()
                 .build());
     return new Node(method);
   }
diff --git a/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java b/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
index 04921e2..be4f6de 100644
--- a/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
+++ b/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
@@ -864,7 +864,6 @@
                 .setMethod(voidReturnMethod)
                 .setAccessFlags(access)
                 .setCode(code)
-                .disableAndroidApiLevelCheck()
                 .build();
         ProgramMethod programMethod = new ProgramMethod(programClass, method);
         IRCode ir = code.buildIR(programMethod, appView, Origin.unknown());
diff --git a/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/ConfigurationDebuggingTest.java b/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/ConfigurationDebuggingTest.java
index c7630ba..7cb0d57 100644
--- a/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/ConfigurationDebuggingTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/ConfigurationDebuggingTest.java
@@ -15,6 +15,7 @@
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.android.tools.r8.utils.codeinspector.InstructionSubject;
@@ -95,7 +96,7 @@
 
   @Parameters(name = "{0}")
   public static TestParametersCollection data() {
-    return getTestParameters().withAllRuntimesAndApiLevels().build();
+    return getTestParameters().withAllRuntimes().build();
   }
 
   public ConfigurationDebuggingTest(TestParameters parameters) {
@@ -110,7 +111,7 @@
             .addKeepRules("-addconfigurationdebugging")
             .addKeepRules("-keep class **.TestClass { <init>(); }")
             .noMinification()
-            .setMinApi(parameters.getApiLevel())
+            .setMinApi(parameters.getRuntime())
             .compile()
             .inspect(this::inspect)
             .writeToZip();
@@ -118,10 +119,10 @@
     R8FullTestBuilder builder =
         testForR8(parameters.getBackend())
             .addLibraryClasses(BaseClass.class, UninstantiatedClass.class, TestClass.class)
-            .addDefaultRuntimeLibrary(parameters)
+            .addLibraryFiles(ToolHelper.getDefaultAndroidJar())
             .addProgramClasses(Caller.class)
             .addKeepMainRule(Caller.class)
-            .setMinApi(parameters.getApiLevel());
+            .setMinApi(parameters.getRuntime());
     R8TestRunResult result =
         builder
             .compile()