diff --git a/src/test/java/com/android/tools/r8/desugar/jdk8272564/Jdk8272564InvalidCode.java b/src/test/examplesJava21/jdk8272564/Jdk8272564InvalidCode.java
similarity index 94%
rename from src/test/java/com/android/tools/r8/desugar/jdk8272564/Jdk8272564InvalidCode.java
rename to src/test/examplesJava21/jdk8272564/Jdk8272564InvalidCode.java
index 26339fb..8800345 100644
--- a/src/test/java/com/android/tools/r8/desugar/jdk8272564/Jdk8272564InvalidCode.java
+++ b/src/test/examplesJava21/jdk8272564/Jdk8272564InvalidCode.java
@@ -2,13 +2,14 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-package com.android.tools.r8.desugar.jdk8272564;
+package jdk8272564;
 
 import static org.junit.Assume.assumeTrue;
 
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.TestRuntime.CfVm;
 import com.android.tools.r8.ToolHelper.DexVm.Version;
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.DescriptorUtils;
@@ -25,7 +26,7 @@
   @Parameters(name = "{0}")
   public static TestParametersCollection data() {
     return getTestParameters()
-        .withCfRuntimes()
+        .withCfRuntimesStartingFromIncluding(CfVm.JDK21)
         .withDexRuntimes()
         .withAllApiLevelsAlsoForCf()
         .build();
@@ -52,6 +53,7 @@
   public void testDesugaring() throws Exception {
     assumeTrue(parameters.isDexRuntime() || isDefaultCfParameters());
     testForDesugaring(parameters)
+        .addStrippedOuter(getClass())
         .addProgramClasses(I.class)
         .addProgramClassFileData(getTransformedClass())
         .run(parameters.getRuntime(), A.class)
@@ -67,6 +69,7 @@
     parameters.assumeR8TestParameters();
     // The R8 lens code rewriter rewrites to the code prior to fixing JDK-8272564.
     testForR8(parameters.getBackend())
+        .addStrippedOuter(getClass())
         .addProgramClasses(I.class)
         .addProgramClassFileData(getTransformedClass())
         .setMinApi(parameters)
diff --git a/src/test/java/com/android/tools/r8/desugar/jdk8272564/Jdk8272564Test.java b/src/test/examplesJava21/jdk8272564/Jdk8272564Test.java
similarity index 81%
rename from src/test/java/com/android/tools/r8/desugar/jdk8272564/Jdk8272564Test.java
rename to src/test/examplesJava21/jdk8272564/Jdk8272564Test.java
index 52809ee..d5a932a 100644
--- a/src/test/java/com/android/tools/r8/desugar/jdk8272564/Jdk8272564Test.java
+++ b/src/test/examplesJava21/jdk8272564/Jdk8272564Test.java
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-package com.android.tools.r8.desugar.jdk8272564;
+package jdk8272564;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -12,10 +12,13 @@
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.TestRuntime.CfVm;
-import com.android.tools.r8.examples.jdk18.jdk8272564.Jdk8272564;
+import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.android.tools.r8.utils.codeinspector.InstructionSubject;
+import com.google.common.collect.ImmutableList;
+import java.util.List;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -41,13 +44,13 @@
   private void assertJdk8272564FixedCode(CodeInspector inspector) {
     assertTrue(
         inspector
-            .clazz(Jdk8272564.Main.typeName())
+            .clazz(Main.class)
             .uniqueMethodWithOriginalName("f")
             .streamInstructions()
             .noneMatch(InstructionSubject::isInvokeVirtual));
     assertTrue(
         inspector
-            .clazz(Jdk8272564.Main.typeName())
+            .clazz(Main.class)
             .uniqueMethodWithOriginalName("g")
             .streamInstructions()
             .noneMatch(InstructionSubject::isInvokeVirtual));
@@ -59,7 +62,7 @@
     assertEquals(
         1,
         inspector
-            .clazz(Jdk8272564.Main.typeName())
+            .clazz(Main.class)
             .uniqueMethodWithOriginalName("f")
             .streamInstructions()
             .filter(InstructionSubject::isInvokeInterface)
@@ -67,7 +70,7 @@
     assertEquals(
         2,
         inspector
-            .clazz(Jdk8272564.Main.typeName())
+            .clazz(Main.class)
             .uniqueMethodWithOriginalName("f")
             .streamInstructions()
             .filter(InstructionSubject::isInvokeVirtual)
@@ -75,7 +78,7 @@
     assertEquals(
         2,
         inspector
-            .clazz(Jdk8272564.Main.typeName())
+            .clazz(Main.class)
             .uniqueMethodWithOriginalName("g")
             .streamInstructions()
             .filter(InstructionSubject::isInvokeInterface)
@@ -83,7 +86,7 @@
     assertEquals(
         2,
         inspector
-            .clazz(Jdk8272564.Main.typeName())
+            .clazz(Main.class)
             .uniqueMethodWithOriginalName("g")
             .streamInstructions()
             .filter(InstructionSubject::isInvokeInterface)
@@ -91,7 +94,7 @@
     assertEquals(
         invokeVirtualCount,
         inspector
-            .clazz(Jdk8272564.Main.typeName())
+            .clazz(Main.class)
             .uniqueMethodWithOriginalName("g")
             .streamInstructions()
             .filter(InstructionSubject::isInvokeVirtual)
@@ -99,7 +102,7 @@
     assertEquals(
         getClassCount,
         inspector
-            .clazz(Jdk8272564.Main.typeName())
+            .clazz(Main.class)
             .uniqueMethodWithOriginalName("g")
             .streamInstructions()
             .filter(InstructionSubject::isInvoke)
@@ -123,24 +126,32 @@
   // See https://bugs.openjdk.java.net/browse/JDK-8272564.
   public void testJdk8272564Compiler() throws Exception {
     assumeTrue(isDefaultCfParameters());
+    AndroidApp build =
+        AndroidApp.builder()
+            .addProgramFiles(ToolHelper.getClassFileForTestClass(Main.class))
+            .build();
     // Ensure that the test is running with CF input from fixing JDK-8272564.
-    assertJdk8272564FixedCode(new CodeInspector(Jdk8272564.jar()));
+    assertJdk8272564FixedCode(new CodeInspector(build));
+  }
+
+  private static List<Class<?>> getInput() {
+    return ImmutableList.of(A.class, B.class, C.class, I.class, J.class, K.class, Main.class);
   }
 
   @Test
   public void testJvm() throws Exception {
     assumeTrue(isDefaultCfParameters());
     testForJvm(parameters)
-        .addRunClasspathFiles(Jdk8272564.jar())
-        .run(parameters.getRuntime(), Jdk8272564.Main.typeName())
+        .addProgramClasses(getInput())
+        .run(parameters.getRuntime(), Main.class)
         .assertSuccess();
   }
 
   @Test
   public void testD8() throws Exception {
     testForDesugaring(parameters)
-        .addProgramFiles(Jdk8272564.jar())
-        .run(parameters.getRuntime(), Jdk8272564.Main.typeName())
+        .addProgramClasses(getInput())
+        .run(parameters.getRuntime(), Main.class)
         .applyIf(
             parameters.isDexRuntime() && parameters.getApiLevel().isLessThan(AndroidApiLevel.U),
             b -> b.inspect(this::assertJdk8272564NotFixedCode),
@@ -153,11 +164,11 @@
     parameters.assumeR8TestParameters();
     // The R8 lens code rewriter rewrites to the code prior to fixing JDK-8272564.
     testForR8(parameters.getBackend())
-        .addProgramFiles(Jdk8272564.jar())
+        .addProgramClasses(getInput())
         .setMinApi(parameters)
         .addDontShrink()
-        .addKeepClassAndMembersRules(Jdk8272564.Main.typeName())
-        .run(parameters.getRuntime(), Jdk8272564.Main.typeName())
+        .addKeepClassAndMembersRules(Main.class)
+        .run(parameters.getRuntime(), Main.class)
         .inspect(this::assertJdk8272564NotFixedCodeR8)
         .assertSuccess();
   }
diff --git a/src/test/java/com/android/tools/r8/examples/jdk18/jdk8272564/Jdk8272564.java b/src/test/java/com/android/tools/r8/examples/jdk18/jdk8272564/Jdk8272564.java
deleted file mode 100644
index efcb017..0000000
--- a/src/test/java/com/android/tools/r8/examples/jdk18/jdk8272564/Jdk8272564.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.android.tools.r8.examples.jdk18.jdk8272564;
-
-import com.android.tools.r8.examples.JavaExampleClassProxy;
-import java.nio.file.Path;
-
-public class Jdk8272564 {
-
-  private static final String EXAMPLE_FILE = "examplesJava21/jdk8272564";
-
-  public static final JavaExampleClassProxy A =
-      new JavaExampleClassProxy(EXAMPLE_FILE, "jdk8272564/A");
-  public static final JavaExampleClassProxy B =
-      new JavaExampleClassProxy(EXAMPLE_FILE, "jdk8272564/B");
-  public static final JavaExampleClassProxy C =
-      new JavaExampleClassProxy(EXAMPLE_FILE, "jdk8272564/C");
-  public static final JavaExampleClassProxy I =
-      new JavaExampleClassProxy(EXAMPLE_FILE, "jdk8272564/I");
-  public static final JavaExampleClassProxy J =
-      new JavaExampleClassProxy(EXAMPLE_FILE, "jdk8272564/J");
-  public static final JavaExampleClassProxy K =
-      new JavaExampleClassProxy(EXAMPLE_FILE, "jdk8272564/K");
-  public static final JavaExampleClassProxy Main =
-      new JavaExampleClassProxy(EXAMPLE_FILE, "jdk8272564/Main");
-
-  public static Path jar() {
-    return JavaExampleClassProxy.examplesJar(EXAMPLE_FILE);
-  }
-}
