diff --git a/src/test/java/com/android/tools/r8/debug/KotlinStdLibCompilationTest.java b/src/test/java/com/android/tools/r8/debug/KotlinStdLibCompilationTest.java
index 0939bd2..19d0631 100644
--- a/src/test/java/com/android/tools/r8/debug/KotlinStdLibCompilationTest.java
+++ b/src/test/java/com/android/tools/r8/debug/KotlinStdLibCompilationTest.java
@@ -58,11 +58,12 @@
               if (kotlinTestParameters.isNewerThanOrEqualTo(KotlinCompilerVersion.KOTLINC_1_8_0)
                   && parameters.isDexRuntime()
                   && parameters.getApiLevel().isLessThan(AndroidApiLevel.N)) {
-                // Kotlin stdlib has references to classes introduced at API level 24.
+                // Kotlin stdlib has references to classes introduced in API level 24 and
+                // java.lang.AutoCloseable introduced in API level 19.
                 diagnostics.assertWarningsCount(
                     kotlinTestParameters.isOlderThanOrEqualTo(KotlinCompilerVersion.KOTLINC_1_9_21)
                         ? 2
-                        : 3);
+                        : (parameters.getApiLevel().isLessThan(AndroidApiLevel.K)) ? 4 : 3);
                 diagnostics.assertAllWarningsMatch(
                     DiagnosticsMatcher.diagnosticType(InterfaceDesugarMissingTypeDiagnostic.class));
               } else {
diff --git a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingSingletonTest.java b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingSingletonTest.java
index 74aed3a..c4c57c0 100644
--- a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingSingletonTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingSingletonTest.java
@@ -9,6 +9,7 @@
 import static org.junit.Assume.assumeFalse;
 import static org.junit.Assume.assumeTrue;
 
+import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
 import com.android.tools.r8.KotlinTestBase;
 import com.android.tools.r8.KotlinTestParameters;
 import com.android.tools.r8.TestParameters;
@@ -66,9 +67,16 @@
     // Get the Kotlin lambdas in the input.
     KotlinLambdasInInput lambdasInInput =
         KotlinLambdasInInput.create(getProgramFiles(), getTestName());
-    assertEquals(2, lambdasInInput.getNumberOfJStyleLambdas());
     assertEquals(
-        kotlinParameters.getLambdaGeneration().isInvokeDynamic() ? 6 : 7,
+        kotlinParameters.getLambdaGeneration().isInvokeDynamic()
+                && kotlinParameters.getCompilerVersion() == KotlinCompilerVersion.KOTLIN_DEV
+            ? 8
+            : 2,
+        lambdasInInput.getNumberOfJStyleLambdas());
+    assertEquals(
+        kotlinParameters.getLambdaGeneration().isInvokeDynamic()
+            ? (kotlinParameters.getCompilerVersion() == KotlinCompilerVersion.KOTLIN_DEV ? 0 : 6)
+            : 7,
         lambdasInInput.getNumberOfKStyleLambdas());
 
     testForR8(parameters.getBackend())
@@ -90,7 +98,13 @@
   private void inspect(
       HorizontallyMergedClassesInspector inspector, KotlinLambdasInInput lambdasInInput) {
     // All J-style Kotlin lambdas should be merged into one class.
-    inspector.assertIsCompleteMergeGroup(lambdasInInput.getJStyleLambdas());
+    if (kotlinParameters
+        .getCompilerVersion()
+        .isLessThanOrEqualTo(KotlinCompilerVersion.KOTLINC_1_9_21)) {
+      inspector.assertIsCompleteMergeGroup(lambdasInInput.getJStyleLambdas());
+    } else {
+      assertEquals(4, inspector.getMergeGroups().size());
+    }
 
     // The remaining lambdas are not merged.
     inspector.assertClassReferencesNotMerged(lambdasInInput.getKStyleLambdas());
