diff --git a/src/main/java/com/android/tools/r8/ir/synthetic/ForwardMethodBuilder.java b/src/main/java/com/android/tools/r8/ir/synthetic/ForwardMethodBuilder.java
index 0c6b359..48536cc 100644
--- a/src/main/java/com/android/tools/r8/ir/synthetic/ForwardMethodBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/synthetic/ForwardMethodBuilder.java
@@ -171,15 +171,17 @@
       maxLocals += 1;
     }
     DexType[] sourceParameters = getSourceParameters();
-    for (int i = 0;
-        i < sourceParameters.length - BooleanUtils.intValue(sourceMethodHasExtraUnusedParameter);
-        i++) {
+    for (int i = 0; i < sourceParameters.length; i++) {
       DexType parameter = sourceParameters[i];
       ValueType parameterType = ValueType.fromDexType(parameter);
-      instructions.add(new CfLoad(parameterType, maxLocals));
+      if (!(sourceMethodHasExtraUnusedParameter && i == sourceParameters.length - 1)) {
+        // We do not need to load the last parameter if it is unused.
+        // We still need to increase the maxStack/maxLocals values for the method to verify.
+        instructions.add(new CfLoad(parameterType, maxLocals));
+        maybeInsertArgumentCast(i, parameter, instructions);
+      }
       maxStack += parameterType.requiredRegisters();
       maxLocals += parameterType.requiredRegisters();
-      maybeInsertArgumentCast(i, parameter, instructions);
     }
     instructions.add(new CfInvoke(getInvokeOpcode(), targetMethod, isInterface));
     if (!targetMethod.getReturnType().isVoidType()) {
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/FullNestOnProgramPathTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/FullNestOnProgramPathTest.java
index 68f3fcf..58cf498 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/FullNestOnProgramPathTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/FullNestOnProgramPathTest.java
@@ -32,7 +32,6 @@
 import com.google.common.collect.ImmutableList;
 import java.util.function.BiFunction;
 import java.util.function.Function;
-import org.junit.Assume;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -54,6 +53,7 @@
         .withCfRuntimesStartingFromIncluding(CfVm.JDK11)
         .withDexRuntimes()
         .withApiLevelsStartingAtIncluding(apiLevelWithInvokeCustomSupport())
+        .enableApiLevelsForCf()
         .build();
   }
 
@@ -120,9 +120,8 @@
 
   @Test
   public void testSingleNestD8() throws Exception {
-    Assume.assumeTrue(parameters.isDexRuntime());
     for (String nestID : NEST_IDS) {
-      testForD8()
+      testForD8(parameters.getBackend())
           .setMinApi(parameters.getApiLevel())
           .addProgramFiles(classesOfNest(nestID))
           .compile()
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/MinimumNumberOfBridgesGenerated.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/MinimumNumberOfBridgesGenerated.java
index 47320d8..ffaca18 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/MinimumNumberOfBridgesGenerated.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/MinimumNumberOfBridgesGenerated.java
@@ -42,6 +42,7 @@
         .withDexRuntime(DexVm.Version.first())
         .withDexRuntime(DexVm.Version.last())
         .withApiLevelsStartingAtIncluding(apiLevelWithInvokeCustomSupport())
+        .enableApiLevelsForCf()
         .build();
   }
 
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesUpdateTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesUpdateTest.java
index 2abe133..00575cd 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesUpdateTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesUpdateTest.java
@@ -43,7 +43,10 @@
 
   @Parameters(name = "{0}")
   public static TestParametersCollection data() {
-    return getTestParameters().withCfRuntimesStartingFromIncluding(CfVm.JDK11).build();
+    return getTestParameters()
+        .withCfRuntimesStartingFromIncluding(CfVm.JDK11)
+        .withAllApiLevelsAlsoForCf()
+        .build();
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestClassMergingTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestClassMergingTest.java
index 9f41a17..3e8fc2a 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestClassMergingTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestClassMergingTest.java
@@ -44,6 +44,7 @@
   public static TestParametersCollection data() {
     return getTestParameters()
         .withCfRuntimesStartingFromIncluding(CfVm.JDK11)
+        .withAllApiLevelsAlsoForCf()
         .build();
   }
 
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestCompilationExceptionTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestCompilationExceptionTest.java
index fd874a1..2533da9 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestCompilationExceptionTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestCompilationExceptionTest.java
@@ -32,7 +32,6 @@
 import java.nio.file.Path;
 import java.util.List;
 import org.hamcrest.Matcher;
-import org.junit.Assume;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -54,12 +53,12 @@
         .withDexRuntime(DexVm.Version.first())
         .withDexRuntime(DexVm.Version.last())
         .withApiLevelsStartingAtIncluding(apiLevelWithInvokeCustomSupport())
+        .enableApiLevelsForCf()
         .build();
   }
 
   @Test
   public void testD8() throws Exception {
-    Assume.assumeTrue(parameters.isDexRuntime());
     testMissingNestHostError(true);
     testIncompleteNestError(true);
   }
@@ -87,7 +86,9 @@
             .map(name -> CLASSES_PATH.resolve(name + CLASS_EXTENSION))
             .collect(toList());
     if (d8) {
-      return testForD8().setMinApi(parameters.getApiLevel()).addProgramFiles(matchingClasses);
+      return testForD8(parameters.getBackend())
+          .setMinApi(parameters.getApiLevel())
+          .addProgramFiles(matchingClasses);
     } else {
       return testForR8(parameters.getBackend())
           .noTreeShaking()
@@ -109,10 +110,11 @@
           .compileWithExpectedDiagnostics(
               diagnostics -> {
                 if (d8) {
-                  diagnostics
-                      .assertOnlyErrors()
-                      .assertErrorsMatch(
-                          diagnosticType(MissingNestHostNestDesugarDiagnostic.class));
+                  if (parameters.getBackend().isDex()) {
+                    diagnostics.assertOnlyErrors();
+                  }
+                  diagnostics.assertErrorsMatch(
+                      diagnosticType(MissingNestHostNestDesugarDiagnostic.class));
 
                   MissingNestHostNestDesugarDiagnostic diagnostic =
                       (MissingNestHostNestDesugarDiagnostic) diagnostics.getErrors().get(0);
@@ -148,9 +150,11 @@
           .compileWithExpectedDiagnostics(
               diagnostics -> {
                 if (d8) {
-                  diagnostics
-                      .assertOnlyErrors()
-                      .assertErrorsMatch(diagnosticType(IncompleteNestNestDesugarDiagnosic.class));
+                  if (parameters.getBackend().isDex()) {
+                    diagnostics.assertOnlyErrors();
+                  }
+                  diagnostics.assertErrorsMatch(
+                      diagnosticType(IncompleteNestNestDesugarDiagnosic.class));
 
                   IncompleteNestNestDesugarDiagnosic diagnostic =
                       (IncompleteNestNestDesugarDiagnosic) diagnostics.getErrors().get(0);
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestConstructorRemovedArgTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestConstructorRemovedArgTest.java
index b216639..04eac5e 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestConstructorRemovedArgTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestConstructorRemovedArgTest.java
@@ -35,6 +35,7 @@
         .withDexRuntime(DexVm.Version.first())
         .withDexRuntime(DexVm.Version.last())
         .withApiLevelsStartingAtIncluding(apiLevelWithInvokeCustomSupport())
+        .enableApiLevelsForCf()
         .build();
   }
 
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestMethodInlinedTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestMethodInlinedTest.java
index 373f6fc..726f391 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestMethodInlinedTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestMethodInlinedTest.java
@@ -36,7 +36,10 @@
 
   @Parameters(name = "{0}")
   public static TestParametersCollection data() {
-    return getTestParameters().withCfRuntimesStartingFromIncluding(CfVm.JDK11).build();
+    return getTestParameters()
+        .withCfRuntimesStartingFromIncluding(CfVm.JDK11)
+        .withAllApiLevelsAlsoForCf()
+        .build();
   }
 
   @Test
