diff --git a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingTrivialKotlinStyleTest.java b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingTrivialKotlinStyleTest.java
index 580b42c..4896ebd 100644
--- a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingTrivialKotlinStyleTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingTrivialKotlinStyleTest.java
@@ -93,23 +93,17 @@
     assertEquals(0, lambdasInInput.getNumberOfJStyleLambdas());
     assertEquals(28, lambdasInInput.getNumberOfKStyleLambdas());
 
-    if (!parameters.isAccessModificationEnabled(allowAccessModification)) {
-      // Only a subset of all K-style Kotlin lambdas are merged without -allowaccessmodification.
-      Set<ClassReference> unmergedLambdas =
-          ImmutableSet.of(
-              lambdasInInput.getKStyleLambdaReferenceFromTypeName(
-                  getTestName(), "inner.InnerKt$testInnerStateless$7"));
-      inspector
-          .assertClassReferencesMerged(
-              lambdasInInput.getKStyleLambdas().stream()
-                  .filter(not(unmergedLambdas::contains))
-                  .collect(Collectors.toList()))
-          .assertClassReferencesNotMerged(unmergedLambdas);
-      return;
-    }
-
-    // All K-style Kotlin lambdas are merged with -allowaccessmodification.
-    inspector.assertClassReferencesMerged(lambdasInInput.getKStyleLambdas());
+    // Only a subset of all K-style Kotlin lambdas are merged.
+    Set<ClassReference> unmergedLambdas =
+        ImmutableSet.of(
+            lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+                getTestName(), "inner.InnerKt$testInnerStateless$7"));
+    inspector
+        .assertClassReferencesMerged(
+            lambdasInInput.getKStyleLambdas().stream()
+                .filter(not(unmergedLambdas::contains))
+                .collect(Collectors.toList()))
+        .assertClassReferencesNotMerged(unmergedLambdas);
   }
 
   private String getExpectedOutput() {
