Restructure java17 test module

Bug: b/344503104
Change-Id: I057fc74c897e43ed0997f6f72b6c8dfba6fabef7
diff --git a/d8_r8/test_modules/tests_java_17/build.gradle.kts b/d8_r8/test_modules/tests_java_17/build.gradle.kts
index 6f37f81..473f4da 100644
--- a/d8_r8/test_modules/tests_java_17/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_17/build.gradle.kts
@@ -17,7 +17,7 @@
   // to tests. Currently both the Test target below and buildExampleJars depend
   // on this.
   sourceSets.test.configure {
-    java.srcDir(root.resolveAll("src", "test", "examplesJava17"))
+    java.srcDir(root.resolveAll("src", "test", "java17"))
   }
   sourceCompatibility = JavaVersion.VERSION_17
   targetCompatibility = JavaVersion.VERSION_17
@@ -35,9 +35,6 @@
   implementation(projectTask("main", "processResources").outputs.files)
 }
 
-// We just need to register the examples jars for it to be referenced by other modules.
-val buildExampleJars = buildExampleJars("examplesJava17")
-
 tasks {
   withType<JavaCompile> {
     dependsOn(gradle.includedBuild("shared").task(":downloadDeps"))
@@ -52,10 +49,7 @@
     TestingState.setUpTestingState(this)
     javaLauncher = getJavaLauncher(Jdk.JDK_17)
     systemProperty("TEST_DATA_LOCATION",
-                   // This should be
-                   //   layout.buildDirectory.dir("classes/java/test").get().toString()
-                   // once the use of 'buildExampleJars' above is removed.
-                   getRoot().resolveAll("build", "test", "examplesJava17", "classes"))
+                   layout.buildDirectory.dir("classes/java/test").get().toString())
     systemProperty("TESTBASE_DATA_LOCATION",
                    testbaseJavaCompileTask.outputs.files.getAsPath().split(File.pathSeparator)[0])
   }
diff --git a/d8_r8/test_modules/tests_java_8/build.gradle.kts b/d8_r8/test_modules/tests_java_8/build.gradle.kts
index d2e7bf7..a718ef2 100644
--- a/d8_r8/test_modules/tests_java_8/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_8/build.gradle.kts
@@ -60,7 +60,6 @@
 
 val sourceSetDependenciesTasks = arrayOf(
   projectTask("tests_java_9", getExampleJarsTaskName("examplesJava9")),
-  projectTask("tests_java_17", getExampleJarsTaskName("examplesJava17")),
 )
 
 fun testDependencies() : FileCollection {
diff --git a/src/test/examplesJava17/backport/MathBackportJava17Test.java b/src/test/java17/com/android/tools/r8/jdk17/backport/MathBackportJava17Test.java
similarity index 97%
rename from src/test/examplesJava17/backport/MathBackportJava17Test.java
rename to src/test/java17/com/android/tools/r8/jdk17/backport/MathBackportJava17Test.java
index bc6e800..f4d2522 100644
--- a/src/test/examplesJava17/backport/MathBackportJava17Test.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/backport/MathBackportJava17Test.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 backport;
+package com.android.tools.r8.jdk17.backport;
 
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
diff --git a/src/test/examplesJava17/backport/ObjectsBackportJava17Test.java b/src/test/java17/com/android/tools/r8/jdk17/backport/ObjectsBackportJava17Test.java
similarity index 98%
rename from src/test/examplesJava17/backport/ObjectsBackportJava17Test.java
rename to src/test/java17/com/android/tools/r8/jdk17/backport/ObjectsBackportJava17Test.java
index 32ba077..bbff907 100644
--- a/src/test/examplesJava17/backport/ObjectsBackportJava17Test.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/backport/ObjectsBackportJava17Test.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 backport;
+package com.android.tools.r8.jdk17.backport;
 
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
diff --git a/src/test/examplesJava17/backport/StrictMathBackportJava17Test.java b/src/test/java17/com/android/tools/r8/jdk17/backport/StrictMathBackportJava17Test.java
similarity index 98%
rename from src/test/examplesJava17/backport/StrictMathBackportJava17Test.java
rename to src/test/java17/com/android/tools/r8/jdk17/backport/StrictMathBackportJava17Test.java
index 0f71867..13c69ab 100644
--- a/src/test/examplesJava17/backport/StrictMathBackportJava17Test.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/backport/StrictMathBackportJava17Test.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 backport;
+package com.android.tools.r8.jdk17.backport;
 
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
diff --git a/src/test/examplesJava17/desugaredlibrary/StreamToListTest.java b/src/test/java17/com/android/tools/r8/jdk17/desugaredlibrary/desugaredlibrary/StreamToListTest.java
similarity index 97%
rename from src/test/examplesJava17/desugaredlibrary/StreamToListTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/desugaredlibrary/desugaredlibrary/StreamToListTest.java
index e9e4786..43502d8 100644
--- a/src/test/examplesJava17/desugaredlibrary/StreamToListTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/desugaredlibrary/desugaredlibrary/StreamToListTest.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 desugaredlibrary;
+package com.android.tools.r8.jdk17.desugaredlibrary.desugaredlibrary;
 
 import static com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification.SPECIFICATIONS_WITH_CF2CF;
 import static com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification.JDK11;
diff --git a/src/test/examplesJava17/enumStatic/StaticEnumMergingTest.java b/src/test/java17/com/android/tools/r8/jdk17/enumStatic/StaticEnumMergingTest.java
similarity index 94%
rename from src/test/examplesJava17/enumStatic/StaticEnumMergingTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/enumStatic/StaticEnumMergingTest.java
index 19f4f8c..68ac889 100644
--- a/src/test/examplesJava17/enumStatic/StaticEnumMergingTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/enumStatic/StaticEnumMergingTest.java
@@ -1,8 +1,9 @@
-package enumStatic; // Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
-
+// Copyright (c) 2023, 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.jdk17.enumStatic;
+
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.enumunboxing.EnumUnboxingTestBase;
 import com.android.tools.r8.utils.StringUtils;
diff --git a/src/test/examplesJava17/enum_sealed/SealedClassesEnumJdk17CompiledTest.java b/src/test/java17/com/android/tools/r8/jdk17/enum_sealed/SealedClassesEnumJdk17CompiledTest.java
similarity index 98%
rename from src/test/examplesJava17/enum_sealed/SealedClassesEnumJdk17CompiledTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/enum_sealed/SealedClassesEnumJdk17CompiledTest.java
index 8aa4194..f131f91 100644
--- a/src/test/examplesJava17/enum_sealed/SealedClassesEnumJdk17CompiledTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/enum_sealed/SealedClassesEnumJdk17CompiledTest.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 enum_sealed;
+package com.android.tools.r8.jdk17.enum_sealed;
 
 import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentAndRenamed;
 import static junit.framework.Assert.assertEquals;
diff --git a/src/test/examplesJava17/jdk17/ir/optimize/interfaces/CastWithMultipleBoundsJavacBytecodeTest.java b/src/test/java17/com/android/tools/r8/jdk17/interfaces/CastWithMultipleBoundsJavacBytecodeTest.java
similarity index 98%
rename from src/test/examplesJava17/jdk17/ir/optimize/interfaces/CastWithMultipleBoundsJavacBytecodeTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/interfaces/CastWithMultipleBoundsJavacBytecodeTest.java
index 768375c..f17c19b 100644
--- a/src/test/examplesJava17/jdk17/ir/optimize/interfaces/CastWithMultipleBoundsJavacBytecodeTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/interfaces/CastWithMultipleBoundsJavacBytecodeTest.java
@@ -1,7 +1,7 @@
 // Copyright (c) 2024, 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 jdk17.ir.optimize.interfaces;
+package com.android.tools.r8.jdk17.interfaces;
 
 import static org.junit.Assert.assertEquals;
 
diff --git a/src/test/examplesJava17/lambda/LambdaJava17Test.java b/src/test/java17/com/android/tools/r8/jdk17/lambda/LambdaJava17Test.java
similarity index 98%
rename from src/test/examplesJava17/lambda/LambdaJava17Test.java
rename to src/test/java17/com/android/tools/r8/jdk17/lambda/LambdaJava17Test.java
index 6da8ada..43fd2a7 100644
--- a/src/test/examplesJava17/lambda/LambdaJava17Test.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/lambda/LambdaJava17Test.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 lambda;
+package com.android.tools.r8.jdk17.lambda;
 
 import static com.android.tools.r8.utils.AndroidApiLevel.B;
 
diff --git a/src/test/examplesJava17/nest/NestLambda.java b/src/test/java17/com/android/tools/r8/jdk17/nest/NestLambda.java
similarity index 95%
rename from src/test/examplesJava17/nest/NestLambda.java
rename to src/test/java17/com/android/tools/r8/jdk17/nest/NestLambda.java
index c60a8fb..aa34bd3 100644
--- a/src/test/examplesJava17/nest/NestLambda.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/nest/NestLambda.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 nest;
+package com.android.tools.r8.jdk17.nest;
 
 public class NestLambda {
 
diff --git a/src/test/examplesJava17/nest/NestLambdaJava17Test.java b/src/test/java17/com/android/tools/r8/jdk17/nest/NestLambdaJava17Test.java
similarity index 97%
rename from src/test/examplesJava17/nest/NestLambdaJava17Test.java
rename to src/test/java17/com/android/tools/r8/jdk17/nest/NestLambdaJava17Test.java
index d3c4330..238cb21 100644
--- a/src/test/examplesJava17/nest/NestLambdaJava17Test.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/nest/NestLambdaJava17Test.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 nest;
+package com.android.tools.r8.jdk17.nest;
 
 import com.android.tools.r8.JdkClassFileProvider;
 import com.android.tools.r8.TestBase;
diff --git a/src/test/examplesJava17/pattern_matching_for_instanceof/PatternMatchingForInstanceOfTest.java b/src/test/java17/com/android/tools/r8/jdk17/pattern_matching_for_instanceof/PatternMatchingForInstanceOfTest.java
similarity index 97%
rename from src/test/examplesJava17/pattern_matching_for_instanceof/PatternMatchingForInstanceOfTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/pattern_matching_for_instanceof/PatternMatchingForInstanceOfTest.java
index 569336c..0647b7f 100644
--- a/src/test/examplesJava17/pattern_matching_for_instanceof/PatternMatchingForInstanceOfTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/pattern_matching_for_instanceof/PatternMatchingForInstanceOfTest.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 pattern_matching_for_instanceof;
+package com.android.tools.r8.jdk17.pattern_matching_for_instanceof;
 
 import com.android.tools.r8.R8TestBuilder;
 import com.android.tools.r8.TestBase;
diff --git a/src/test/examplesJava17/records/EmptyRecordAnnotationTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/EmptyRecordAnnotationTest.java
similarity index 91%
rename from src/test/examplesJava17/records/EmptyRecordAnnotationTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/EmptyRecordAnnotationTest.java
index 691b91c..d06f46f 100644
--- a/src/test/examplesJava17/records/EmptyRecordAnnotationTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/EmptyRecordAnnotationTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import com.android.tools.r8.JdkClassFileProvider;
 import com.android.tools.r8.TestBase;
@@ -68,9 +68,9 @@
         .addLibraryProvider(JdkClassFileProvider.fromSystemJdk())
         .addInnerClassesAndStrippedOuter(getClass())
         .setMinApi(parameters)
-        .addKeepRules("-keep class records.EmptyRecordAnnotationTest$TestClass { *; }")
+        .addKeepClassAndMembersRules(EmptyRecordAnnotationTest.TestClass.class)
         .addKeepRules("-keepattributes *Annotation*")
-        .addKeepRules("-keep class records.EmptyRecordAnnotationTest$Empty")
+        .addKeepClassRules(EmptyRecordAnnotationTest.Empty.class)
         .addKeepMainRule(TestClass.class)
         .compile()
         .applyIf(parameters.isCfRuntime(), r -> r.inspect(RecordTestUtils::assertRecordsAreRecords))
@@ -94,10 +94,10 @@
         recordName = "com.android.tools.r8.RecordTag";
       }
       return StringUtils.lines(
-          "class " + recordName, "class records.EmptyRecordAnnotationTest$Empty");
+          "class " + recordName, "class " + EmptyRecordAnnotationTest.Empty.class.getTypeName());
     }
     return StringUtils.lines(
-        "class java.lang.Record", "class records.EmptyRecordAnnotationTest$Empty");
+        "class java.lang.Record", "class " + EmptyRecordAnnotationTest.Empty.class.getTypeName());
   }
 
   record Empty() {}
diff --git a/src/test/examplesJava17/records/EmptyRecordTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/EmptyRecordTest.java
similarity index 98%
rename from src/test/examplesJava17/records/EmptyRecordTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/EmptyRecordTest.java
index 963a514..4592b7f 100644
--- a/src/test/examplesJava17/records/EmptyRecordTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/EmptyRecordTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static org.junit.Assume.assumeFalse;
 
diff --git a/src/test/examplesJava17/records/RecordBlog.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordBlog.java
similarity index 91%
rename from src/test/examplesJava17/records/RecordBlog.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordBlog.java
index 0b40c86..66ddf39 100644
--- a/src/test/examplesJava17/records/RecordBlog.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordBlog.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 records;
+package com.android.tools.r8.jdk17.records;
 
 public class RecordBlog {
 
diff --git a/src/test/examplesJava17/records/RecordBlogTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordBlogTest.java
similarity index 97%
rename from src/test/examplesJava17/records/RecordBlogTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordBlogTest.java
index 37f1117..7080763 100644
--- a/src/test/examplesJava17/records/RecordBlogTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordBlogTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assume.assumeTrue;
@@ -28,7 +28,7 @@
 public class RecordBlogTest extends TestBase {
 
   private static final String REFERENCE_OUTPUT_FORMAT = "Person[name=%s, age=42]";
-  private static final String CLASS = "records.RecordBlog$Person";
+  private static final String CLASS = RecordBlog.Person.class.getTypeName();
   private static final Map<String, String> KEEP_RULE_TO_OUTPUT_FORMAT =
       ImmutableMap.<String, String>builder()
           .put("-dontobfuscate\n-dontoptimize", "RecordBlog$Person[name=%s, age=42]")
diff --git a/src/test/examplesJava17/records/RecordClasspathTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordClasspathTest.java
similarity index 99%
rename from src/test/examplesJava17/records/RecordClasspathTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordClasspathTest.java
index 867d632..89abbae 100644
--- a/src/test/examplesJava17/records/RecordClasspathTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordClasspathTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
diff --git a/src/test/examplesJava17/records/RecordComponentAnnotationsTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordComponentAnnotationsTest.java
similarity index 80%
rename from src/test/examplesJava17/records/RecordComponentAnnotationsTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordComponentAnnotationsTest.java
index 8aba71c..e721f0d 100644
--- a/src/test/examplesJava17/records/RecordComponentAnnotationsTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordComponentAnnotationsTest.java
@@ -1,7 +1,7 @@
 // Copyright (c) 2023, 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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static com.android.tools.r8.utils.codeinspector.AnnotationMatchers.hasAnnotationTypes;
 import static com.android.tools.r8.utils.codeinspector.AnnotationMatchers.hasElements;
@@ -40,6 +40,8 @@
 @RunWith(Parameterized.class)
 public class RecordComponentAnnotationsTest extends TestBase {
 
+  private static final String ANNOTATION_PREFIX =
+      "@" + RecordComponentAnnotationsTest.class.getTypeName() + "$";
   private static final String JVM_UNTIL_20_EXPECTED_RESULT =
       StringUtils.lines(
           "Jane Doe",
@@ -50,21 +52,21 @@
           "java.lang.String",
           "true",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(\"a\")",
-          "@records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly(\"c\")",
+          ANNOTATION_PREFIX + "Annotation(\"a\")",
+          ANNOTATION_PREFIX + "AnnotationRecordComponentOnly(\"c\")",
           "age",
           "int",
           "true",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(\"x\")",
-          "@records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly(\"z\")",
+          ANNOTATION_PREFIX + "Annotation(\"x\")",
+          ANNOTATION_PREFIX + "AnnotationRecordComponentOnly(\"z\")",
           "2",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(\"x\")",
-          "@records.RecordComponentAnnotationsTest$AnnotationFieldOnly(\"y\")",
+          ANNOTATION_PREFIX + "Annotation(\"x\")",
+          ANNOTATION_PREFIX + "AnnotationFieldOnly(\"y\")",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(\"a\")",
-          "@records.RecordComponentAnnotationsTest$AnnotationFieldOnly(\"b\")");
+          ANNOTATION_PREFIX + "Annotation(\"a\")",
+          ANNOTATION_PREFIX + "AnnotationFieldOnly(\"b\")");
   private static final String JVM_FROM_21_EXPECTED_RESULT =
       JVM_UNTIL_20_EXPECTED_RESULT.replaceAll(
           "records.RecordComponentAnnotationsTest\\$Annotation",
@@ -79,21 +81,21 @@
           "java.lang.String",
           "true",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(value=a)",
-          "@records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly(value=c)",
+          ANNOTATION_PREFIX + "Annotation(value=a)",
+          ANNOTATION_PREFIX + "AnnotationRecordComponentOnly(value=c)",
           "age",
           "int",
           "true",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(value=x)",
-          "@records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly(value=z)",
+          ANNOTATION_PREFIX + "Annotation(value=x)",
+          ANNOTATION_PREFIX + "AnnotationRecordComponentOnly(value=z)",
           "2",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(value=x)",
-          "@records.RecordComponentAnnotationsTest$AnnotationFieldOnly(value=y)",
+          ANNOTATION_PREFIX + "Annotation(value=x)",
+          ANNOTATION_PREFIX + "AnnotationFieldOnly(value=y)",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(value=a)",
-          "@records.RecordComponentAnnotationsTest$AnnotationFieldOnly(value=b)");
+          ANNOTATION_PREFIX + "Annotation(value=a)",
+          ANNOTATION_PREFIX + "AnnotationFieldOnly(value=b)");
   private static final String JVM_EXPECTED_RESULT_R8 =
       StringUtils.lines(
           "Jane Doe",
@@ -104,21 +106,21 @@
           "java.lang.String",
           "true",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(\"a\")",
-          "@records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly(\"c\")",
+          ANNOTATION_PREFIX + "Annotation(\"a\")",
+          ANNOTATION_PREFIX + "AnnotationRecordComponentOnly(\"c\")",
           "b",
           "int",
           "true",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(\"x\")",
-          "@records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly(\"z\")",
+          ANNOTATION_PREFIX + "Annotation(\"x\")",
+          ANNOTATION_PREFIX + "AnnotationRecordComponentOnly(\"z\")",
           "2",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(\"a\")",
-          "@records.RecordComponentAnnotationsTest$AnnotationFieldOnly(\"b\")",
+          ANNOTATION_PREFIX + "Annotation(\"a\")",
+          ANNOTATION_PREFIX + "AnnotationFieldOnly(\"b\")",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(\"x\")",
-          "@records.RecordComponentAnnotationsTest$AnnotationFieldOnly(\"y\")");
+          ANNOTATION_PREFIX + "Annotation(\"x\")",
+          ANNOTATION_PREFIX + "AnnotationFieldOnly(\"y\")");
   private static final String ART_EXPECTED_RESULT_R8 =
       StringUtils.lines(
           "Jane Doe",
@@ -129,21 +131,21 @@
           "java.lang.String",
           "true",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(value=a)",
-          "@records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly(value=c)",
+          ANNOTATION_PREFIX + "Annotation(value=a)",
+          ANNOTATION_PREFIX + "AnnotationRecordComponentOnly(value=c)",
           "b",
           "int",
           "true",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(value=x)",
-          "@records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly(value=z)",
+          ANNOTATION_PREFIX + "Annotation(value=x)",
+          ANNOTATION_PREFIX + "AnnotationRecordComponentOnly(value=z)",
           "2",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(value=a)",
-          "@records.RecordComponentAnnotationsTest$AnnotationFieldOnly(value=b)",
+          ANNOTATION_PREFIX + "Annotation(value=a)",
+          ANNOTATION_PREFIX + "AnnotationFieldOnly(value=b)",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(value=x)",
-          "@records.RecordComponentAnnotationsTest$AnnotationFieldOnly(value=y)");
+          ANNOTATION_PREFIX + "Annotation(value=x)",
+          ANNOTATION_PREFIX + "AnnotationFieldOnly(value=y)");
   private static final String JVM_EXPECTED_RESULT_R8_NO_KEEP_ANNOTATIONS =
       StringUtils.lines(
           "Jane Doe",
@@ -154,14 +156,14 @@
           "java.lang.String",
           "true",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(\"a\")",
-          "@records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly(\"c\")",
+          ANNOTATION_PREFIX + "Annotation(\"a\")",
+          ANNOTATION_PREFIX + "AnnotationRecordComponentOnly(\"c\")",
           "b",
           "int",
           "true",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(\"x\")",
-          "@records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly(\"z\")",
+          ANNOTATION_PREFIX + "Annotation(\"x\")",
+          ANNOTATION_PREFIX + "AnnotationRecordComponentOnly(\"z\")",
           "2",
           "0",
           "0");
@@ -175,14 +177,14 @@
           "java.lang.String",
           "true",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(value=a)",
-          "@records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly(value=c)",
+          ANNOTATION_PREFIX + "Annotation(value=a)",
+          ANNOTATION_PREFIX + "AnnotationRecordComponentOnly(value=c)",
           "b",
           "int",
           "true",
           "2",
-          "@records.RecordComponentAnnotationsTest$Annotation(value=x)",
-          "@records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly(value=z)",
+          ANNOTATION_PREFIX + "Annotation(value=x)",
+          ANNOTATION_PREFIX + "AnnotationRecordComponentOnly(value=z)",
           "2",
           "0",
           "0");
@@ -307,18 +309,17 @@
         .addLibraryFiles(ToolHelper.getAndroidJar(35))
         .addKeepMainRule(RecordWithAnnotations.class)
         .addKeepClassAndMembersRulesWithAllowObfuscation(
-            "records.RecordComponentAnnotationsTest$Person")
+            RecordComponentAnnotationsTest.Person.class)
         .addKeepClassAndMembersRules(
-            "records.RecordComponentAnnotationsTest$Annotation",
-            "records.RecordComponentAnnotationsTest$AnnotationFieldOnly",
-            "records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly")
+            RecordComponentAnnotationsTest.Annotation.class,
+            RecordComponentAnnotationsTest.AnnotationFieldOnly.class,
+            RecordComponentAnnotationsTest.AnnotationRecordComponentOnly.class)
         .applyIf(keepAnnotations, TestShrinkerBuilder::addKeepRuntimeVisibleAnnotations)
         .setMinApi(parameters)
         .compile()
         .inspect(
             inspector -> {
-              ClassSubject person =
-                  inspector.clazz("records.RecordComponentAnnotationsTest$Person");
+              ClassSubject person = inspector.clazz(RecordComponentAnnotationsTest.Person.class);
               FieldSubject name = person.uniqueFieldWithOriginalName("name");
               FieldSubject age = person.uniqueFieldWithOriginalName("age");
               if (parameters.isCfRuntime()) {
@@ -334,9 +335,10 @@
                     person.getFinalRecordComponents().get(0).getAnnotations(),
                     hasAnnotationTypes(
                         inspector.getTypeSubject(
-                            "records.RecordComponentAnnotationsTest$Annotation"),
+                            RecordComponentAnnotationsTest.Annotation.class.getTypeName()),
                         inspector.getTypeSubject(
-                            "records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly")));
+                            RecordComponentAnnotationsTest.AnnotationRecordComponentOnly.class
+                                .getTypeName())));
                 assertThat(
                     person.getFinalRecordComponents().get(0).getAnnotations().get(0),
                     hasElements(new Pair<>("value", "a")));
@@ -353,9 +355,10 @@
                     person.getFinalRecordComponents().get(1).getAnnotations(),
                     hasAnnotationTypes(
                         inspector.getTypeSubject(
-                            "records.RecordComponentAnnotationsTest$Annotation"),
+                            RecordComponentAnnotationsTest.Annotation.class.getTypeName()),
                         inspector.getTypeSubject(
-                            "records.RecordComponentAnnotationsTest$AnnotationRecordComponentOnly")));
+                            RecordComponentAnnotationsTest.AnnotationRecordComponentOnly.class
+                                .getTypeName())));
                 assertThat(
                     person.getFinalRecordComponents().get(1).getAnnotations().get(0),
                     hasElements(new Pair<>("value", "x")));
diff --git a/src/test/examplesJava17/records/RecordComponentSignatureTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordComponentSignatureTest.java
similarity index 96%
rename from src/test/examplesJava17/records/RecordComponentSignatureTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordComponentSignatureTest.java
index d2d530b..a885015 100644
--- a/src/test/examplesJava17/records/RecordComponentSignatureTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordComponentSignatureTest.java
@@ -1,7 +1,7 @@
 // Copyright (c) 2023, 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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static com.android.tools.r8.utils.codeinspector.Matchers.isAbsent;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -94,7 +94,7 @@
                     .inspect(
                         inspector -> {
                           ClassSubject person =
-                              inspector.clazz("records.RecordComponentSignatureTest$Person");
+                              inspector.clazz(RecordComponentSignatureTest.Person.class);
                           if (parameters.isCfRuntime()) {
                             assertEquals(2, person.getFinalRecordComponents().size());
 
@@ -142,7 +142,7 @@
         .compile()
         .inspect(
             inspector -> {
-              ClassSubject person = inspector.clazz("records.RecordComponentSignatureTest$Person");
+              ClassSubject person = inspector.clazz(RecordComponentSignatureTest.Person.class);
               FieldSubject age = person.uniqueFieldWithOriginalName("age");
               assertThat(age, isAbsent());
               assertEquals(0, person.getFinalRecordComponents().size());
diff --git a/src/test/examplesJava17/records/RecordHashCodeManyFieldsTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordHashCodeManyFieldsTest.java
similarity index 99%
rename from src/test/examplesJava17/records/RecordHashCodeManyFieldsTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordHashCodeManyFieldsTest.java
index 1cd7313..34c135a 100644
--- a/src/test/examplesJava17/records/RecordHashCodeManyFieldsTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordHashCodeManyFieldsTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static org.junit.Assume.assumeTrue;
 
diff --git a/src/test/examplesJava17/records/RecordHashCodeTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordHashCodeTest.java
similarity index 98%
rename from src/test/examplesJava17/records/RecordHashCodeTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordHashCodeTest.java
index b5a21f4..dad3bbb 100644
--- a/src/test/examplesJava17/records/RecordHashCodeTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordHashCodeTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static org.junit.Assume.assumeTrue;
 
diff --git a/src/test/examplesJava17/records/RecordInstanceOfTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordInstanceOfTest.java
similarity index 98%
rename from src/test/examplesJava17/records/RecordInstanceOfTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordInstanceOfTest.java
index 0fdb15f..7f5f03d 100644
--- a/src/test/examplesJava17/records/RecordInstanceOfTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordInstanceOfTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import com.android.tools.r8.JdkClassFileProvider;
 import com.android.tools.r8.R8FullTestBuilder;
diff --git a/src/test/examplesJava17/records/RecordInterfaceTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordInterfaceTest.java
similarity index 98%
rename from src/test/examplesJava17/records/RecordInterfaceTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordInterfaceTest.java
index 583ccb4..d7a4d51 100644
--- a/src/test/examplesJava17/records/RecordInterfaceTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordInterfaceTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assume.assumeTrue;
diff --git a/src/test/examplesJava17/records/RecordInvokeCustom.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordInvokeCustom.java
similarity index 97%
rename from src/test/examplesJava17/records/RecordInvokeCustom.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordInvokeCustom.java
index c460f56..ec2905f 100644
--- a/src/test/examplesJava17/records/RecordInvokeCustom.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordInvokeCustom.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 records;
+package com.android.tools.r8.jdk17.records;
 
 public class RecordInvokeCustom {
 
diff --git a/src/test/examplesJava17/records/RecordInvokeCustomSplitDesugaringTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordInvokeCustomSplitDesugaringTest.java
similarity index 94%
rename from src/test/examplesJava17/records/RecordInvokeCustomSplitDesugaringTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordInvokeCustomSplitDesugaringTest.java
index d797244..7f9aa64 100644
--- a/src/test/examplesJava17/records/RecordInvokeCustomSplitDesugaringTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordInvokeCustomSplitDesugaringTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static com.android.tools.r8.DiagnosticsMatcher.diagnosticMessage;
 import static com.android.tools.r8.DiagnosticsMatcher.diagnosticType;
@@ -25,8 +25,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
-import records.RecordInvokeCustom.Empty;
-import records.RecordInvokeCustom.Person;
 
 @RunWith(Parameterized.class)
 public class RecordInvokeCustomSplitDesugaringTest extends TestBase {
@@ -119,9 +117,11 @@
         .inspect(
             i -> {
               minifiedNames[0] =
-                  extractSimpleFinalName(i, "records.RecordInvokeCustomSplitDesugaringTest$Empty");
+                  extractSimpleFinalName(
+                      i, RecordInvokeCustomSplitDesugaringTest.Empty.class.getTypeName());
               minifiedNames[1] =
-                  extractSimpleFinalName(i, "records.RecordInvokeCustomSplitDesugaringTest$Person");
+                  extractSimpleFinalName(
+                      i, RecordInvokeCustomSplitDesugaringTest.Person.class.getTypeName());
             })
         .run(parameters.getRuntime(), RecordInvokeCustom.class)
         .assertSuccessWithOutput(
diff --git a/src/test/examplesJava17/records/RecordInvokeCustomTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordInvokeCustomTest.java
similarity index 98%
rename from src/test/examplesJava17/records/RecordInvokeCustomTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordInvokeCustomTest.java
index 55c9d9c..cb53165 100644
--- a/src/test/examplesJava17/records/RecordInvokeCustomTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordInvokeCustomTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import com.android.tools.r8.JdkClassFileProvider;
 import com.android.tools.r8.R8FullTestBuilder;
diff --git a/src/test/examplesJava17/records/RecordKeepRules.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordKeepRules.java
similarity index 93%
rename from src/test/examplesJava17/records/RecordKeepRules.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordKeepRules.java
index a62132f..51d8b1e 100644
--- a/src/test/examplesJava17/records/RecordKeepRules.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordKeepRules.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 records;
+package com.android.tools.r8.jdk17.records;
 
 // The code needs to be completely outside the test for the test to work.
 // If these classes are inner classes, age is not correctly simplified to a 42 constant field.
diff --git a/src/test/examplesJava17/records/RecordKeepRulesTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordKeepRulesTest.java
similarity index 90%
rename from src/test/examplesJava17/records/RecordKeepRulesTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordKeepRulesTest.java
index cf864fe..f4a2d9a 100644
--- a/src/test/examplesJava17/records/RecordKeepRulesTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordKeepRulesTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import com.android.tools.r8.JdkClassFileProvider;
 import com.android.tools.r8.TestBase;
@@ -18,15 +18,15 @@
 @RunWith(Parameterized.class)
 public class RecordKeepRulesTest extends TestBase {
 
+  private static final String PERSON = RecordKeepRules.Person.class.getTypeName();
+
   private static final String KEEP_RULE_CLASS_NAME =
-      "-keep,allowshrinking,allowoptimization class records.RecordKeepRules$Person";
+      "-keep,allowshrinking,allowoptimization class " + PERSON;
   private static final String KEEP_RULE_FIELD_NAMES =
-      "-keepclassmembers,allowshrinking,allowoptimization class records.RecordKeepRules$Person {"
-          + " <fields>; }";
+      "-keepclassmembers,allowshrinking,allowoptimization class " + PERSON + " {" + " <fields>; }";
   private static final String KEEP_RULE_FIELDS_NO_NAMES =
-      "-keepclassmembers,allowobfuscation class records.RecordKeepRules$Person { <fields>; }";
-  private static final String KEEP_RULE_ALL =
-      "-keep class records.RecordKeepRules$Person { <fields>; }";
+      "-keepclassmembers,allowobfuscation class " + PERSON + " { <fields>; }";
+  private static final String KEEP_RULE_ALL = "-keep class " + PERSON + " { <fields>; }";
 
   private static final String EXPECTED_RESULT_R8_WITH_CLASS_NAME =
       StringUtils.lines("RecordKeepRules$Person[a=Jane Doe]", "RecordKeepRules$Person[a=Bob]");
diff --git a/src/test/examplesJava17/records/RecordLib.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordLib.java
similarity index 88%
rename from src/test/examplesJava17/records/RecordLib.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordLib.java
index 7f1b149..6a2eb0d 100644
--- a/src/test/examplesJava17/records/RecordLib.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordLib.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 records;
+package com.android.tools.r8.jdk17.records;
 
 public class RecordLib {
 
diff --git a/src/test/examplesJava17/records/RecordLibMergeTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordLibMergeTest.java
similarity index 83%
rename from src/test/examplesJava17/records/RecordLibMergeTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordLibMergeTest.java
index fd0e655..2c4f49b 100644
--- a/src/test/examplesJava17/records/RecordLibMergeTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordLibMergeTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import com.android.tools.r8.JdkClassFileProvider;
 import com.android.tools.r8.R8FullTestBuilder;
@@ -19,6 +19,8 @@
 @RunWith(Parameterized.class)
 public class RecordLibMergeTest extends TestBase {
 
+  private static final String RECORD_LIB = RecordLib.class.getTypeName();
+
   private static final String EXPECTED_RESULT = StringUtils.lines("true", "true");
 
   private final TestParameters parameters;
@@ -43,8 +45,8 @@
         testForR8(Backend.CF)
             .addProgramClassesAndInnerClasses(RecordLib.class)
             .addKeepRules(
-                "-keep class records.RecordLib { public static java.lang.Object getRecord(); }")
-            .addKeepRules("-keep class records.RecordLib$LibRecord")
+                "-keep class " + RECORD_LIB + " { public static java.lang.Object getRecord(); }")
+            .addKeepRules("-keep class " + RECORD_LIB + "$LibRecord")
             .addLibraryProvider(JdkClassFileProvider.fromSystemJdk())
             .compile()
             .writeToZip();
@@ -54,8 +56,8 @@
             .addProgramClassesAndInnerClasses(RecordMain.class)
             .setMinApi(parameters)
             .addKeepMainRule(RecordMain.class)
-            .addKeepRules("-keep class records.RecordLib$LibRecord")
-            .addKeepRules("-keep class records.RecordMain$MainRecord");
+            .addKeepRules("-keep class " + RECORD_LIB + "$LibRecord")
+            .addKeepRules("-keep class " + RecordMain.MainRecord.class.getTypeName());
     if (parameters.isCfRuntime()) {
       builder
           .addLibraryProvider(JdkClassFileProvider.fromSystemJdk())
diff --git a/src/test/examplesJava17/records/RecordMain.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordMain.java
similarity index 91%
rename from src/test/examplesJava17/records/RecordMain.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordMain.java
index dcca88e..075f5a0 100644
--- a/src/test/examplesJava17/records/RecordMain.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordMain.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 records;
+package com.android.tools.r8.jdk17.records;
 
 public class RecordMain {
 
diff --git a/src/test/examplesJava17/records/RecordMergeTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordMergeTest.java
similarity index 99%
rename from src/test/examplesJava17/records/RecordMergeTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordMergeTest.java
index 4153e38..f4bfaa2 100644
--- a/src/test/examplesJava17/records/RecordMergeTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordMergeTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static com.android.tools.r8.DiagnosticsMatcher.diagnosticType;
 import static com.android.tools.r8.utils.codeinspector.Matchers.isAbsent;
diff --git a/src/test/examplesJava17/records/RecordOnlyReferencedFromCodeTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordOnlyReferencedFromCodeTest.java
similarity index 97%
rename from src/test/examplesJava17/records/RecordOnlyReferencedFromCodeTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordOnlyReferencedFromCodeTest.java
index 8219729..82c3935 100644
--- a/src/test/examplesJava17/records/RecordOnlyReferencedFromCodeTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordOnlyReferencedFromCodeTest.java
@@ -1,7 +1,7 @@
 // Copyright (c) 2025, 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 records;
+package com.android.tools.r8.jdk17.records;
 
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
diff --git a/src/test/examplesJava17/records/RecordProfileRewritingTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordProfileRewritingTest.java
similarity index 99%
rename from src/test/examplesJava17/records/RecordProfileRewritingTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordProfileRewritingTest.java
index 13c487d..8b64f08 100644
--- a/src/test/examplesJava17/records/RecordProfileRewritingTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordProfileRewritingTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static com.android.tools.r8.ir.desugar.records.RecordFullInstructionDesugaring.EQUALS_RECORD_METHOD_NAME;
 import static com.android.tools.r8.ir.desugar.records.RecordFullInstructionDesugaring.GET_FIELDS_AS_OBJECTS_METHOD_NAME;
@@ -264,7 +264,7 @@
     ClassSubject hashCodeHelperClassSubject =
         inspector.clazz(
             SyntheticItemsTestUtils.syntheticRecordHelperClass(
-                PERSON_REFERENCE, objectsHashCodeClassSubject.isAbsent() ? 0 : 2));
+                PERSON_REFERENCE, objectsHashCodeClassSubject.isAbsent() ? 1 : 3));
     assertThat(hashCodeHelperClassSubject, isAbsentIf(recordDesugaringIsOff));
 
     MethodSubject hashCodeHelperMethodSubject = hashCodeHelperClassSubject.uniqueMethod();
@@ -281,7 +281,7 @@
     ClassSubject toStringHelperClassSubject =
         inspector.clazz(
             SyntheticItemsTestUtils.syntheticRecordHelperClass(
-                PERSON_REFERENCE, objectsHashCodeClassSubject.isAbsent() ? 1 : 3));
+                PERSON_REFERENCE, objectsHashCodeClassSubject.isAbsent() ? 0 : 2));
     assertThat(toStringHelperClassSubject, isAbsentIf(recordDesugaringIsOff));
 
     MethodSubject toStringHelperMethodSubject = toStringHelperClassSubject.uniqueMethod();
diff --git a/src/test/examplesJava17/records/RecordReflectionTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordReflectionTest.java
similarity index 98%
rename from src/test/examplesJava17/records/RecordReflectionTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordReflectionTest.java
index bab9fb7..948066c 100644
--- a/src/test/examplesJava17/records/RecordReflectionTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordReflectionTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import com.android.tools.r8.JdkClassFileProvider;
 import com.android.tools.r8.TestBase;
diff --git a/src/test/examplesJava17/records/RecordShrinkFieldTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordShrinkFieldTest.java
similarity index 98%
rename from src/test/examplesJava17/records/RecordShrinkFieldTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordShrinkFieldTest.java
index 232f02f..1a51412 100644
--- a/src/test/examplesJava17/records/RecordShrinkFieldTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordShrinkFieldTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static org.junit.Assert.assertEquals;
 
diff --git a/src/test/examplesJava17/records/RecordTestUtils.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordTestUtils.java
similarity index 96%
rename from src/test/examplesJava17/records/RecordTestUtils.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordTestUtils.java
index 6c501c0..d078416 100644
--- a/src/test/examplesJava17/records/RecordTestUtils.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordTestUtils.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
diff --git a/src/test/examplesJava17/records/RecordWithMembersTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordWithMembersTest.java
similarity index 98%
rename from src/test/examplesJava17/records/RecordWithMembersTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordWithMembersTest.java
index 41d36ea..b97d67f 100644
--- a/src/test/examplesJava17/records/RecordWithMembersTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordWithMembersTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import com.android.tools.r8.JdkClassFileProvider;
 import com.android.tools.r8.R8FullTestBuilder;
diff --git a/src/test/examplesJava17/records/RecordWithNonMaterializableConstClassTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/RecordWithNonMaterializableConstClassTest.java
similarity index 95%
rename from src/test/examplesJava17/records/RecordWithNonMaterializableConstClassTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/RecordWithNonMaterializableConstClassTest.java
index 4cda982..08a8deb 100644
--- a/src/test/examplesJava17/records/RecordWithNonMaterializableConstClassTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/RecordWithNonMaterializableConstClassTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import com.android.tools.r8.JdkClassFileProvider;
 import com.android.tools.r8.R8FullTestBuilder;
@@ -10,6 +10,7 @@
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.TestRuntime.CfVm;
+import com.android.tools.r8.jdk17.records.differentpackage.PrivateConstClass;
 import com.android.tools.r8.utils.StringUtils;
 import java.nio.file.Path;
 import org.junit.Test;
@@ -17,13 +18,12 @@
 import org.junit.runners.Parameterized;
 import org.junit.runners.Parameterized.Parameter;
 import org.junit.runners.Parameterized.Parameters;
-import records.differentpackage.PrivateConstClass;
 
 @RunWith(Parameterized.class)
 public class RecordWithNonMaterializableConstClassTest extends TestBase {
 
   private static final String PRIVATE_CLASS_NAME =
-      "records.differentpackage.PrivateConstClass$PrivateClass";
+      PrivateConstClass.class.getTypeName() + "$PrivateClass";
   private static final Class<?> EXTRA_DATA = PrivateConstClass.class;
   private static final String EXPECTED_RESULT_FORMAT =
       StringUtils.lines("%s[%s=class " + PRIVATE_CLASS_NAME + "]");
diff --git a/src/test/examplesJava17/records/SimpleRecordTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/SimpleRecordTest.java
similarity index 99%
rename from src/test/examplesJava17/records/SimpleRecordTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/SimpleRecordTest.java
index cfedd02..0af4aec 100644
--- a/src/test/examplesJava17/records/SimpleRecordTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/SimpleRecordTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import static org.junit.Assume.assumeFalse;
 import static org.junit.Assume.assumeTrue;
diff --git a/src/test/examplesJava17/records/UnusedRecordFieldTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/UnusedRecordFieldTest.java
similarity index 95%
rename from src/test/examplesJava17/records/UnusedRecordFieldTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/UnusedRecordFieldTest.java
index 0de5cba..477062e 100644
--- a/src/test/examplesJava17/records/UnusedRecordFieldTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/UnusedRecordFieldTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import com.android.tools.r8.JdkClassFileProvider;
 import com.android.tools.r8.R8FullTestBuilder;
@@ -59,7 +59,7 @@
         testForR8(parameters.getBackend())
             .addInnerClassesAndStrippedOuter(getClass())
             .setMinApi(parameters)
-            .addKeepRules("-keep class records.UnusedRecordFieldTest$UnusedRecordField { *; }")
+            .addKeepClassAndMembersRules(UnusedRecordFieldTest.UnusedRecordField.class)
             .addKeepMainRule(UnusedRecordField.class);
     if (parameters.isCfRuntime()) {
       builder
diff --git a/src/test/examplesJava17/records/UnusedRecordMethodTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/UnusedRecordMethodTest.java
similarity index 95%
rename from src/test/examplesJava17/records/UnusedRecordMethodTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/UnusedRecordMethodTest.java
index 9f8bd26..547b4f3 100644
--- a/src/test/examplesJava17/records/UnusedRecordMethodTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/UnusedRecordMethodTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import com.android.tools.r8.JdkClassFileProvider;
 import com.android.tools.r8.R8FullTestBuilder;
@@ -60,7 +60,7 @@
         testForR8(parameters.getBackend())
             .addInnerClassesAndStrippedOuter(getClass())
             .setMinApi(parameters)
-            .addKeepRules("-keep class records.UnusedRecordMethodTest$UnusedRecordMethod { *; }")
+            .addKeepClassAndMembersRules(UnusedRecordMethodTest.UnusedRecordMethod.class)
             .addKeepMainRule(UnusedRecordMethod.class);
     if (parameters.isCfRuntime()) {
       builder
diff --git a/src/test/examplesJava17/records/UnusedRecordReflectionTest.java b/src/test/java17/com/android/tools/r8/jdk17/records/UnusedRecordReflectionTest.java
similarity index 95%
rename from src/test/examplesJava17/records/UnusedRecordReflectionTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/UnusedRecordReflectionTest.java
index 2caa702..d320c5e 100644
--- a/src/test/examplesJava17/records/UnusedRecordReflectionTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/UnusedRecordReflectionTest.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 records;
+package com.android.tools.r8.jdk17.records;
 
 import com.android.tools.r8.JdkClassFileProvider;
 import com.android.tools.r8.R8FullTestBuilder;
@@ -61,8 +61,7 @@
         testForR8(parameters.getBackend())
             .addInnerClassesAndStrippedOuter(getClass())
             .setMinApi(parameters)
-            .addKeepRules(
-                "-keep class records.UnusedRecordReflectionTest$UnusedRecordReflection { *; }")
+            .addKeepClassAndMembersRules(UnusedRecordReflectionTest.UnusedRecordReflection.class)
             .addKeepMainRule(UnusedRecordReflection.class);
     if (parameters.isCfRuntime()) {
       builder
diff --git a/src/test/examplesJava17/records/differentpackage/PrivateConstClass.java b/src/test/java17/com/android/tools/r8/jdk17/records/differentpackage/PrivateConstClass.java
similarity index 85%
rename from src/test/examplesJava17/records/differentpackage/PrivateConstClass.java
rename to src/test/java17/com/android/tools/r8/jdk17/records/differentpackage/PrivateConstClass.java
index fbf93c6..cc657e7 100644
--- a/src/test/examplesJava17/records/differentpackage/PrivateConstClass.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/records/differentpackage/PrivateConstClass.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 records.differentpackage;
+package com.android.tools.r8.jdk17.records.differentpackage;
 
 public class PrivateConstClass {
 
diff --git a/src/test/examplesJava17/sealed/Compiler.java b/src/test/java17/com/android/tools/r8/jdk17/sealed/Compiler.java
similarity index 70%
rename from src/test/examplesJava17/sealed/Compiler.java
rename to src/test/java17/com/android/tools/r8/jdk17/sealed/Compiler.java
index 8d29eea..6107c55 100644
--- a/src/test/examplesJava17/sealed/Compiler.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/sealed/Compiler.java
@@ -2,9 +2,9 @@
 // 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 sealed;
+package com.android.tools.r8.jdk17.sealed;
 
-public sealed abstract class Compiler permits R8Compiler, D8Compiler {
+public abstract sealed class Compiler permits R8Compiler, D8Compiler {
 
   public abstract void run();
 }
\ No newline at end of file
diff --git a/src/test/examplesJava17/sealed/D8Compiler.java b/src/test/java17/com/android/tools/r8/jdk17/sealed/D8Compiler.java
similarity index 88%
rename from src/test/examplesJava17/sealed/D8Compiler.java
rename to src/test/java17/com/android/tools/r8/jdk17/sealed/D8Compiler.java
index e86df73..d7a532b 100644
--- a/src/test/examplesJava17/sealed/D8Compiler.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/sealed/D8Compiler.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 sealed;
+package com.android.tools.r8.jdk17.sealed;
 
 public final class D8Compiler extends Compiler {
 
diff --git a/src/test/examplesJava17/sealed/Helper.java b/src/test/java17/com/android/tools/r8/jdk17/sealed/Helper.java
similarity index 84%
rename from src/test/examplesJava17/sealed/Helper.java
rename to src/test/java17/com/android/tools/r8/jdk17/sealed/Helper.java
index eacda06..9254a37 100644
--- a/src/test/examplesJava17/sealed/Helper.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/sealed/Helper.java
@@ -1,4 +1,4 @@
-package sealed;
+package com.android.tools.r8.jdk17.sealed;
 
 import com.google.common.collect.ImmutableList;
 import java.util.List;
diff --git a/src/test/examplesJava17/sealed/Main.java b/src/test/java17/com/android/tools/r8/jdk17/sealed/Main.java
similarity index 88%
rename from src/test/examplesJava17/sealed/Main.java
rename to src/test/java17/com/android/tools/r8/jdk17/sealed/Main.java
index f163a21..2a2bdc2 100644
--- a/src/test/examplesJava17/sealed/Main.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/sealed/Main.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 sealed;
+package com.android.tools.r8.jdk17.sealed;
 
 public class Main {
 
diff --git a/src/test/examplesJava17/sealed/R8Compiler.java b/src/test/java17/com/android/tools/r8/jdk17/sealed/R8Compiler.java
similarity index 88%
rename from src/test/examplesJava17/sealed/R8Compiler.java
rename to src/test/java17/com/android/tools/r8/jdk17/sealed/R8Compiler.java
index 72a522a..d337686 100644
--- a/src/test/examplesJava17/sealed/R8Compiler.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/sealed/R8Compiler.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 sealed;
+package com.android.tools.r8.jdk17.sealed;
 
 public final class R8Compiler extends Compiler {
 
diff --git a/src/test/examplesJava17/sealed/SealedClassesClasspathTest.java b/src/test/java17/com/android/tools/r8/jdk17/sealed/SealedClassesClasspathTest.java
similarity index 93%
rename from src/test/examplesJava17/sealed/SealedClassesClasspathTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/sealed/SealedClassesClasspathTest.java
index c1d8e26..01c3cfb 100644
--- a/src/test/examplesJava17/sealed/SealedClassesClasspathTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/sealed/SealedClassesClasspathTest.java
@@ -1,8 +1,9 @@
-package sealed; // Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
-
+// 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.jdk17.sealed;
+
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestCompilerBuilder;
 import com.android.tools.r8.TestParameters;
diff --git a/src/test/examplesJava17/sealed/SealedClassesJdk17CompiledTest.java b/src/test/java17/com/android/tools/r8/jdk17/sealed/SealedClassesJdk17CompiledTest.java
similarity index 94%
rename from src/test/examplesJava17/sealed/SealedClassesJdk17CompiledTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/sealed/SealedClassesJdk17CompiledTest.java
index 6dfc18f..32b953e 100644
--- a/src/test/examplesJava17/sealed/SealedClassesJdk17CompiledTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/sealed/SealedClassesJdk17CompiledTest.java
@@ -1,8 +1,9 @@
-package sealed; // Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file
-
+// Copyright (c) 2020, 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.jdk17.sealed;
+
 import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentAndRenamed;
 import static junit.framework.Assert.assertEquals;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -92,7 +93,7 @@
             keepPermittedSubclassesAttribute,
             TestShrinkerBuilder::addKeepAttributePermittedSubclasses)
         .addKeepPermittedSubclasses(Compiler.class)
-        .addKeepRules("-keep,allowobfuscation class * extends sealed.Compiler")
+        .addKeepRules("-keep,allowobfuscation class * extends " + Compiler.class.getTypeName())
         .addKeepMainRule(Main.class)
         .compile()
         .inspect(this::inspect)
diff --git a/src/test/examplesJava17/sealed/SealedClassesLibraryTest.java b/src/test/java17/com/android/tools/r8/jdk17/sealed/SealedClassesLibraryTest.java
similarity index 93%
rename from src/test/examplesJava17/sealed/SealedClassesLibraryTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/sealed/SealedClassesLibraryTest.java
index 617ea4e..a80db80 100644
--- a/src/test/examplesJava17/sealed/SealedClassesLibraryTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/sealed/SealedClassesLibraryTest.java
@@ -1,8 +1,9 @@
-package sealed; // Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file
-
+// 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.jdk17.sealed;
+
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestCompilerBuilder;
 import com.android.tools.r8.TestParameters;
diff --git a/src/test/examplesJava17/string/StringBuilderWithAppendOutOfBoundsTest.java b/src/test/java17/com/android/tools/r8/jdk17/string/StringBuilderWithAppendOutOfBoundsTest.java
similarity index 97%
rename from src/test/examplesJava17/string/StringBuilderWithAppendOutOfBoundsTest.java
rename to src/test/java17/com/android/tools/r8/jdk17/string/StringBuilderWithAppendOutOfBoundsTest.java
index cb3e379..502d922 100644
--- a/src/test/examplesJava17/string/StringBuilderWithAppendOutOfBoundsTest.java
+++ b/src/test/java17/com/android/tools/r8/jdk17/string/StringBuilderWithAppendOutOfBoundsTest.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 string;
+package com.android.tools.r8.jdk17.string;
 
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;