Update to support Java 17

Support class files with version 61.

Move all use of JDK 16 for testing new features to JDK 17,
leaving JDK 16 not used for testing any more.

Removed all use of --enable-preview, as no tested features are
preview on JDK 17.

Content of README.google:
Name: Java Development Kit (JDK)
URL: https://jdk.java.net/17/
Version: 17
Revision: NA
License: the GNU General Public License, version 2, with the Classpath Exception.

Description:
This is pulled directly from the website for the JDK releases that has an open source license.
Synlinks have reen resolved using `cp -rL` before uploading.
Change-Id: I9526ce07e8911c21d5ad75b628fa4ab6fe9c2f9f
diff --git a/.gitignore b/.gitignore
index 424a67a..080826a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -131,6 +131,12 @@
 third_party/openjdk/desugar_jdk_libs_releases/1.1.1.tar.gz
 third_party/openjdk/desugar_jdk_libs_releases/1.1.5
 third_party/openjdk/desugar_jdk_libs_releases/1.1.5.tar.gz
+third_party/openjdk/jdk-17/linux
+third_party/openjdk/jdk-17/linux.tar.gz
+third_party/openjdk/jdk-17/osx
+third_party/openjdk/jdk-17/osx.tar.gz
+third_party/openjdk/jdk-17/windows
+third_party/openjdk/jdk-17/windows.tar.gz
 third_party/openjdk/jdk-16/linux
 third_party/openjdk/jdk-16/linux.tar.gz
 third_party/openjdk/jdk-16/osx
diff --git a/build.gradle b/build.gradle
index 3321e41..e83113a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -131,9 +131,9 @@
             srcDirs = ['src/test/examplesJava11']
         }
     }
-    examplesJava16 {
+    examplesJava17 {
         java {
-            srcDirs = ['src/test/examplesJava16']
+            srcDirs = ['src/test/examplesJava17']
         }
     }
     jdk11TimeTests {
@@ -374,18 +374,18 @@
                 "third_party": ["openjdk/openjdk-9.0.4/linux",
                                 "openjdk/jdk8/linux-x86",
                                 "openjdk/jdk-11/linux",
-                                "openjdk/jdk-16/linux"],
+                                "openjdk/jdk-17/linux"],
         ],
         osx: [
                 "third_party": ["openjdk/openjdk-9.0.4/osx",
                                 "openjdk/jdk8/darwin-x86",
                                 "openjdk/jdk-11/osx",
-                                "openjdk/jdk-16/osx"],
+                                "openjdk/jdk-17/osx"],
         ],
         windows: [
                 "third_party": ["openjdk/openjdk-9.0.4/windows",
                                 "openjdk/jdk-11/windows",
-                                "openjdk/jdk-16/windows"],
+                                "openjdk/jdk-17/windows"],
         ],
 ]
 
@@ -624,10 +624,10 @@
         JavaVersion.VERSION_11,
         false)
 setJdkCompilationWithCompatibility(
-        sourceSets.examplesJava16.compileJavaTaskName,
-        'jdk-16',
-        JavaVersion.VERSION_16,
-        true)
+        sourceSets.examplesJava17.compileJavaTaskName,
+        'jdk-17',
+        JavaVersion.VERSION_17,
+        false)
 
 task compileMainWithJava11 (type: JavaCompile) {
     dependsOn downloadDeps
@@ -1618,7 +1618,7 @@
 buildExampleJarsCreateTask("Java9", sourceSets.examplesJava9)
 buildExampleJarsCreateTask("Java10", sourceSets.examplesJava10)
 buildExampleJarsCreateTask("Java11", sourceSets.examplesJava11)
-buildExampleJarsCreateTask("Java16", sourceSets.examplesJava16)
+buildExampleJarsCreateTask("Java17", sourceSets.examplesJava17)
 
 task provideArtFrameworksDependencies {
     cloudDependencies.tools.forEach({ art ->
@@ -1701,7 +1701,7 @@
     dependsOn buildExampleJava9Jars
     dependsOn buildExampleJava10Jars
     dependsOn buildExampleJava11Jars
-    dependsOn buildExampleJava16Jars
+    dependsOn buildExampleJava17Jars
     dependsOn buildExampleAndroidApi
     def examplesDir = file("src/test/examples")
     def noDexTests = [
diff --git a/scripts/add-openjdk.sh b/scripts/add-openjdk.sh
old mode 100644
new mode 100755
index 8587b93..6f8bada
--- a/scripts/add-openjdk.sh
+++ b/scripts/add-openjdk.sh
@@ -16,9 +16,9 @@
 # Prepare README.google
 # Update JDK_VERSION below
 
-# Now run script wit fingers crossed!
+# Now run script with fingers crossed!
 
-JDK_VERSION=16.0.2
+JDK_VERSION=17
 
 tar xf ~/Downloads/openjdk-${JDK_VERSION}_linux-x64_bin.tar.gz
 cp -rL jdk-${JDK_VERSION} linux
@@ -28,7 +28,7 @@
 rm -rf linux
 rm linux.tar.gz
 
-tar xf ~/Downloads/openjdk-${JDK_VERSION}_osx-x64_bin.tar.gz
+tar xf ~/Downloads/openjdk-${JDK_VERSION}_macos-x64_bin.tar.gz
 cp -rL jdk-${JDK_VERSION}.jdk osx
 cp README.google osx
 upload_to_google_storage.py -a --bucket r8-deps osx
@@ -43,3 +43,7 @@
 rm -rf windows
 rm -rf jdk-${JDK_VERSION}
 rm windows.tar.gz
+
+git add *.sha1
+
+echo "Update additional files, see https://r8-review.googlesource.com/c/r8/+/61909"
\ No newline at end of file
diff --git a/src/main/java/com/android/tools/r8/cf/CfVersion.java b/src/main/java/com/android/tools/r8/cf/CfVersion.java
index 5b877b8..b23d44d 100644
--- a/src/main/java/com/android/tools/r8/cf/CfVersion.java
+++ b/src/main/java/com/android/tools/r8/cf/CfVersion.java
@@ -36,6 +36,8 @@
   public static final CfVersion V15_PREVIEW = new CfVersion(Opcodes.V15 | Opcodes.V_PREVIEW);
   public static final CfVersion V16 = new CfVersion(Opcodes.V16);
   public static final CfVersion V16_PREVIEW = new CfVersion(Opcodes.V16 | Opcodes.V_PREVIEW);
+  public static final CfVersion V17 = new CfVersion(Opcodes.V17);
+  public static final CfVersion V17_PREVIEW = new CfVersion(Opcodes.V17 | Opcodes.V_PREVIEW);
 
   private final int version;
 
@@ -55,7 +57,8 @@
     CfVersion.V13,
     CfVersion.V14,
     CfVersion.V15,
-    CfVersion.V16
+    CfVersion.V16,
+    CfVersion.V17
   };
 
   // Private constructor in case we want to canonicalize versions.
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 860860b..34cad6f 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -124,7 +124,7 @@
     }
   }
 
-  public static final CfVersion SUPPORTED_CF_VERSION = CfVersion.V16_PREVIEW;
+  public static final CfVersion SUPPORTED_CF_VERSION = CfVersion.V17;
   public static final CfVersion EXPERIMENTAL_CF_VERSION = CfVersion.V12;
 
   public static final int SUPPORTED_DEX_VERSION =
diff --git a/src/test/examplesJava16/pattern_matching_for_instanceof/Main.java b/src/test/examplesJava17/pattern_matching_for_instanceof/Main.java
similarity index 100%
rename from src/test/examplesJava16/pattern_matching_for_instanceof/Main.java
rename to src/test/examplesJava17/pattern_matching_for_instanceof/Main.java
diff --git a/src/test/examplesJava16/records/EmptyRecord.java b/src/test/examplesJava17/records/EmptyRecord.java
similarity index 100%
rename from src/test/examplesJava16/records/EmptyRecord.java
rename to src/test/examplesJava17/records/EmptyRecord.java
diff --git a/src/test/examplesJava16/records/RecordInstanceOf.java b/src/test/examplesJava17/records/RecordInstanceOf.java
similarity index 100%
rename from src/test/examplesJava16/records/RecordInstanceOf.java
rename to src/test/examplesJava17/records/RecordInstanceOf.java
diff --git a/src/test/examplesJava16/records/RecordInvokeCustom.java b/src/test/examplesJava17/records/RecordInvokeCustom.java
similarity index 100%
rename from src/test/examplesJava16/records/RecordInvokeCustom.java
rename to src/test/examplesJava17/records/RecordInvokeCustom.java
diff --git a/src/test/examplesJava16/records/RecordReflection.java b/src/test/examplesJava17/records/RecordReflection.java
similarity index 100%
rename from src/test/examplesJava16/records/RecordReflection.java
rename to src/test/examplesJava17/records/RecordReflection.java
diff --git a/src/test/examplesJava16/records/RecordWithMembers.java b/src/test/examplesJava17/records/RecordWithMembers.java
similarity index 100%
rename from src/test/examplesJava16/records/RecordWithMembers.java
rename to src/test/examplesJava17/records/RecordWithMembers.java
diff --git a/src/test/examplesJava16/records/SimpleRecord.java b/src/test/examplesJava17/records/SimpleRecord.java
similarity index 100%
rename from src/test/examplesJava16/records/SimpleRecord.java
rename to src/test/examplesJava17/records/SimpleRecord.java
diff --git a/src/test/examplesJava16/sealed/Compiler.java b/src/test/examplesJava17/sealed/Compiler.java
similarity index 100%
rename from src/test/examplesJava16/sealed/Compiler.java
rename to src/test/examplesJava17/sealed/Compiler.java
diff --git a/src/test/examplesJava16/sealed/D8Compiler.java b/src/test/examplesJava17/sealed/D8Compiler.java
similarity index 100%
rename from src/test/examplesJava16/sealed/D8Compiler.java
rename to src/test/examplesJava17/sealed/D8Compiler.java
diff --git a/src/test/examplesJava16/sealed/Main.java b/src/test/examplesJava17/sealed/Main.java
similarity index 100%
rename from src/test/examplesJava16/sealed/Main.java
rename to src/test/examplesJava17/sealed/Main.java
diff --git a/src/test/examplesJava16/sealed/R8Compiler.java b/src/test/examplesJava17/sealed/R8Compiler.java
similarity index 100%
rename from src/test/examplesJava16/sealed/R8Compiler.java
rename to src/test/examplesJava17/sealed/R8Compiler.java
diff --git a/src/test/java/com/android/tools/r8/TestRuntime.java b/src/test/java/com/android/tools/r8/TestRuntime.java
index 05f9e16..20d71c6 100644
--- a/src/test/java/com/android/tools/r8/TestRuntime.java
+++ b/src/test/java/com/android/tools/r8/TestRuntime.java
@@ -29,7 +29,7 @@
     JDK9("jdk9", 53),
     JDK10("jdk10", 54),
     JDK11("jdk11", 55),
-    JDK16("jdk16", 60),
+    JDK17("jdk17", 61),
     ;
 
     private final String name;
@@ -70,13 +70,13 @@
   private static final Path JDK9_PATH =
       Paths.get(ToolHelper.THIRD_PARTY_DIR, "openjdk", "openjdk-9.0.4");
   private static final Path JDK11_PATH = Paths.get(ToolHelper.THIRD_PARTY_DIR, "openjdk", "jdk-11");
-  private static final Path JDK16_PATH = Paths.get(ToolHelper.THIRD_PARTY_DIR, "openjdk", "jdk-16");
+  private static final Path JDK17_PATH = Paths.get(ToolHelper.THIRD_PARTY_DIR, "openjdk", "jdk-17");
   private static final Map<CfVm, Path> jdkPaths =
       ImmutableMap.of(
           CfVm.JDK8, JDK8_PATH,
           CfVm.JDK9, JDK9_PATH,
           CfVm.JDK11, JDK11_PATH,
-          CfVm.JDK16, JDK16_PATH);
+          CfVm.JDK17, JDK17_PATH);
 
   public static CfRuntime getCheckedInJdk(CfVm vm) {
     if (vm == CfVm.JDK8) {
@@ -121,9 +121,9 @@
     return new CfRuntime(CfVm.JDK11, getCheckedInJdkHome(CfVm.JDK11));
   }
 
-  // TODO(b/169692487): Add this to 'getCheckedInCfRuntimes' when we start having support for JDK16.
-  public static CfRuntime getCheckedInJdk16() {
-    return new CfRuntime(CfVm.JDK16, getCheckedInJdkHome(CfVm.JDK16));
+  // TODO(b/169692487): Add this to 'getCheckedInCfRuntimes' when we start having support for JDK17.
+  public static CfRuntime getCheckedInJdk17() {
+    return new CfRuntime(CfVm.JDK17, getCheckedInJdkHome(CfVm.JDK17));
   }
 
   public static List<CfRuntime> getCheckedInCfRuntimes() {
diff --git a/src/test/java/com/android/tools/r8/desugar/records/EmptyRecordTest.java b/src/test/java/com/android/tools/r8/desugar/records/EmptyRecordTest.java
index 817114e..97d9f66 100644
--- a/src/test/java/com/android/tools/r8/desugar/records/EmptyRecordTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/records/EmptyRecordTest.java
@@ -32,10 +32,10 @@
 
   @Parameterized.Parameters(name = "{0}")
   public static List<Object[]> data() {
-    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk16).
+    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk17).
     return buildParameters(
         getTestParameters()
-            .withCustomRuntime(CfRuntime.getCheckedInJdk16())
+            .withCustomRuntime(CfRuntime.getCheckedInJdk17())
             .withDexRuntimes()
             .withAllApiLevelsAlsoForCf()
             .build());
@@ -46,7 +46,6 @@
     if (parameters.isCfRuntime()) {
       testForJvm()
           .addProgramClassFileData(PROGRAM_DATA)
-          .enablePreview()
           .run(parameters.getRuntime(), MAIN_TYPE)
           .assertSuccessWithOutput(EXPECTED_RESULT);
     }
diff --git a/src/test/java/com/android/tools/r8/desugar/records/RecordInstanceOfTest.java b/src/test/java/com/android/tools/r8/desugar/records/RecordInstanceOfTest.java
index 6d0f1a3..0c9715e 100644
--- a/src/test/java/com/android/tools/r8/desugar/records/RecordInstanceOfTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/records/RecordInstanceOfTest.java
@@ -32,10 +32,10 @@
 
   @Parameterized.Parameters(name = "{0}")
   public static List<Object[]> data() {
-    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk15).
+    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk17).
     return buildParameters(
         getTestParameters()
-            .withCustomRuntime(CfRuntime.getCheckedInJdk16())
+            .withCustomRuntime(CfRuntime.getCheckedInJdk17())
             .withDexRuntimes()
             .withAllApiLevelsAlsoForCf()
             .build());
@@ -46,7 +46,6 @@
     if (parameters.isCfRuntime()) {
       testForJvm()
           .addProgramClassFileData(PROGRAM_DATA)
-          .enablePreview()
           .run(parameters.getRuntime(), MAIN_TYPE)
           .assertSuccessWithOutput(EXPECTED_RESULT);
     }
diff --git a/src/test/java/com/android/tools/r8/desugar/records/RecordInvokeCustomTest.java b/src/test/java/com/android/tools/r8/desugar/records/RecordInvokeCustomTest.java
index 3326483..0e6e6cd 100644
--- a/src/test/java/com/android/tools/r8/desugar/records/RecordInvokeCustomTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/records/RecordInvokeCustomTest.java
@@ -45,10 +45,10 @@
 
   @Parameterized.Parameters(name = "{0}")
   public static List<Object[]> data() {
-    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk16).
+    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk17).
     return buildParameters(
         getTestParameters()
-            .withCustomRuntime(CfRuntime.getCheckedInJdk16())
+            .withCustomRuntime(CfRuntime.getCheckedInJdk17())
             .withDexRuntimes()
             .withAllApiLevelsAlsoForCf()
             .build());
@@ -59,7 +59,6 @@
     if (parameters.isCfRuntime()) {
       testForJvm()
           .addProgramClassFileData(PROGRAM_DATA)
-          .enablePreview()
           .run(parameters.getRuntime(), MAIN_TYPE)
           .assertSuccessWithOutput(EXPECTED_RESULT);
     }
diff --git a/src/test/java/com/android/tools/r8/desugar/records/RecordMergeTest.java b/src/test/java/com/android/tools/r8/desugar/records/RecordMergeTest.java
index ef11ef4..7af5f41 100644
--- a/src/test/java/com/android/tools/r8/desugar/records/RecordMergeTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/records/RecordMergeTest.java
@@ -40,10 +40,10 @@
 
   @Parameterized.Parameters(name = "{0}")
   public static List<Object[]> data() {
-    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk16).
+    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk17).
     return buildParameters(
         getTestParameters()
-            .withCustomRuntime(CfRuntime.getCheckedInJdk16())
+            .withCustomRuntime(CfRuntime.getCheckedInJdk17())
             .withDexRuntimes()
             .withAllApiLevelsAlsoForCf()
             .build());
diff --git a/src/test/java/com/android/tools/r8/desugar/records/RecordReflectionTest.java b/src/test/java/com/android/tools/r8/desugar/records/RecordReflectionTest.java
index cad3c5b..0529a9f 100644
--- a/src/test/java/com/android/tools/r8/desugar/records/RecordReflectionTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/records/RecordReflectionTest.java
@@ -42,16 +42,15 @@
 
   @Parameterized.Parameters(name = "{0}")
   public static List<Object[]> data() {
-    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk16).
+    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk17).
     return buildParameters(
-        getTestParameters().withCustomRuntime(CfRuntime.getCheckedInJdk16()).build());
+        getTestParameters().withCustomRuntime(CfRuntime.getCheckedInJdk17()).build());
   }
 
   @Test
   public void testJvm() throws Exception {
     testForJvm()
         .addProgramClassFileData(PROGRAM_DATA)
-        .enablePreview()
         .run(parameters.getRuntime(), MAIN_TYPE)
         .assertSuccessWithOutput(EXPECTED_RESULT);
   }
diff --git a/src/test/java/com/android/tools/r8/desugar/records/RecordTestUtils.java b/src/test/java/com/android/tools/r8/desugar/records/RecordTestUtils.java
index 224a873..2d4d6fd 100644
--- a/src/test/java/com/android/tools/r8/desugar/records/RecordTestUtils.java
+++ b/src/test/java/com/android/tools/r8/desugar/records/RecordTestUtils.java
@@ -33,7 +33,7 @@
  */
 public class RecordTestUtils {
 
-  private static final String EXAMPLE_FOLDER = "examplesJava16";
+  private static final String EXAMPLE_FOLDER = "examplesJava17";
   private static final String RECORD_FOLDER = "records";
 
   public static Path jar() {
diff --git a/src/test/java/com/android/tools/r8/desugar/records/RecordWithMembersTest.java b/src/test/java/com/android/tools/r8/desugar/records/RecordWithMembersTest.java
index 4b2c62a..a513579 100644
--- a/src/test/java/com/android/tools/r8/desugar/records/RecordWithMembersTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/records/RecordWithMembersTest.java
@@ -34,10 +34,10 @@
 
   @Parameterized.Parameters(name = "{0}")
   public static List<Object[]> data() {
-    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk16).
+    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk17).
     return buildParameters(
         getTestParameters()
-            .withCustomRuntime(CfRuntime.getCheckedInJdk16())
+            .withCustomRuntime(CfRuntime.getCheckedInJdk17())
             .withDexRuntimes()
             .withAllApiLevelsAlsoForCf()
             .build());
@@ -48,7 +48,6 @@
     if (parameters.isCfRuntime()) {
       testForJvm()
           .addProgramClassFileData(PROGRAM_DATA)
-          .enablePreview()
           .run(parameters.getRuntime(), MAIN_TYPE)
           .assertSuccessWithOutput(EXPECTED_RESULT);
     }
diff --git a/src/test/java/com/android/tools/r8/desugar/records/SimpleRecordTest.java b/src/test/java/com/android/tools/r8/desugar/records/SimpleRecordTest.java
index ad338ed..3c41bae 100644
--- a/src/test/java/com/android/tools/r8/desugar/records/SimpleRecordTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/records/SimpleRecordTest.java
@@ -33,10 +33,10 @@
 
   @Parameterized.Parameters(name = "{0}")
   public static List<Object[]> data() {
-    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk16).
+    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk17).
     return buildParameters(
         getTestParameters()
-            .withCustomRuntime(CfRuntime.getCheckedInJdk16())
+            .withCustomRuntime(CfRuntime.getCheckedInJdk17())
             .withDexRuntimes()
             .withAllApiLevelsAlsoForCf()
             .build());
@@ -47,7 +47,6 @@
     if (parameters.isCfRuntime()) {
       testForJvm()
           .addProgramClassFileData(PROGRAM_DATA)
-          .enablePreview()
           .run(parameters.getRuntime(), MAIN_TYPE)
           .assertSuccessWithOutput(EXPECTED_RESULT);
     }
diff --git a/src/test/java/com/android/tools/r8/desugar/sealed/SealedAttributeTest.java b/src/test/java/com/android/tools/r8/desugar/sealed/SealedAttributeTest.java
index d311db8..710f6f5 100644
--- a/src/test/java/com/android/tools/r8/desugar/sealed/SealedAttributeTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/sealed/SealedAttributeTest.java
@@ -13,7 +13,7 @@
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestRuntime;
-import com.android.tools.r8.examples.jdk16.Sealed;
+import com.android.tools.r8.examples.jdk17.Sealed;
 import com.android.tools.r8.utils.AndroidApiLevel;
 import java.util.List;
 import org.junit.Test;
@@ -28,9 +28,9 @@
 
   @Parameters(name = "{0}")
   public static List<Object[]> data() {
-    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk16).
+    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk17).
     return buildParameters(
-        getTestParameters().withCustomRuntime(TestRuntime.getCheckedInJdk16()).build(),
+        getTestParameters().withCustomRuntime(TestRuntime.getCheckedInJdk17()).build(),
         Backend.values());
   }
 
@@ -43,8 +43,7 @@
     assumeTrue(backend == Backend.CF);
     testForJvm()
         .addRunClasspathFiles(Sealed.jar())
-        .enablePreview()
-        .run(TestRuntime.getCheckedInJdk16(), Sealed.Main.typeName())
+        .run(TestRuntime.getCheckedInJdk17(), Sealed.Main.typeName())
         .assertSuccessWithOutputLines("R8 compiler", "D8 compiler");
   }
 
diff --git a/src/test/java/com/android/tools/r8/examples/jdk16/PatternMatchingForInstenceof.java b/src/test/java/com/android/tools/r8/examples/jdk17/PatternMatchingForInstanceof.java
similarity index 78%
rename from src/test/java/com/android/tools/r8/examples/jdk16/PatternMatchingForInstenceof.java
rename to src/test/java/com/android/tools/r8/examples/jdk17/PatternMatchingForInstanceof.java
index 0cc4846..ec5f4cd 100644
--- a/src/test/java/com/android/tools/r8/examples/jdk16/PatternMatchingForInstenceof.java
+++ b/src/test/java/com/android/tools/r8/examples/jdk17/PatternMatchingForInstanceof.java
@@ -2,14 +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.examples.jdk16;
+package com.android.tools.r8.examples.jdk17;
 
 import com.android.tools.r8.examples.JavaExampleClassProxy;
 import java.nio.file.Path;
 
-public class PatternMatchingForInstenceof {
+public class PatternMatchingForInstanceof {
 
-  private static final String EXAMPLE_FILE = "examplesJava16/pattern_matching_for_instanceof";
+  private static final String EXAMPLE_FILE = "examplesJava17/pattern_matching_for_instanceof";
 
   public static final JavaExampleClassProxy Main =
       new JavaExampleClassProxy(EXAMPLE_FILE, "pattern_matching_for_instanceof/Main");
diff --git a/src/test/java/com/android/tools/r8/examples/jdk16/Records.java b/src/test/java/com/android/tools/r8/examples/jdk17/Records.java
similarity index 85%
rename from src/test/java/com/android/tools/r8/examples/jdk16/Records.java
rename to src/test/java/com/android/tools/r8/examples/jdk17/Records.java
index a8677b8..aa4581e 100644
--- a/src/test/java/com/android/tools/r8/examples/jdk16/Records.java
+++ b/src/test/java/com/android/tools/r8/examples/jdk17/Records.java
@@ -2,14 +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.examples.jdk16;
+package com.android.tools.r8.examples.jdk17;
 
 import com.android.tools.r8.examples.JavaExampleClassProxy;
 import java.nio.file.Path;
 
 public class Records {
 
-  private static final String EXAMPLE_FILE = "examplesJava16/records";
+  private static final String EXAMPLE_FILE = "examplesJava17/records";
 
   public static final JavaExampleClassProxy Main =
       new JavaExampleClassProxy(EXAMPLE_FILE, "records/Main");
diff --git a/src/test/java/com/android/tools/r8/examples/jdk16/Sealed.java b/src/test/java/com/android/tools/r8/examples/jdk17/Sealed.java
similarity index 89%
rename from src/test/java/com/android/tools/r8/examples/jdk16/Sealed.java
rename to src/test/java/com/android/tools/r8/examples/jdk17/Sealed.java
index c995d13..8858316 100644
--- a/src/test/java/com/android/tools/r8/examples/jdk16/Sealed.java
+++ b/src/test/java/com/android/tools/r8/examples/jdk17/Sealed.java
@@ -2,14 +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.examples.jdk16;
+package com.android.tools.r8.examples.jdk17;
 
 import com.android.tools.r8.examples.JavaExampleClassProxy;
 import java.nio.file.Path;
 
 public class Sealed {
 
-  private static final String EXAMPLE_FILE = "examplesJava16/sealed";
+  private static final String EXAMPLE_FILE = "examplesJava17/sealed";
 
   public static final JavaExampleClassProxy Compiler =
       new JavaExampleClassProxy(EXAMPLE_FILE, "sealed/Compiler");
diff --git a/src/test/java/com/android/tools/r8/java_language/pattern_matching_for_instenceof/PattternMatchingForInstanceOfTest.java b/src/test/java/com/android/tools/r8/java_language/pattern_matching_for_instenceof/PattternMatchingForInstanceOfTest.java
index 345f198..95cf5b2 100644
--- a/src/test/java/com/android/tools/r8/java_language/pattern_matching_for_instenceof/PattternMatchingForInstanceOfTest.java
+++ b/src/test/java/com/android/tools/r8/java_language/pattern_matching_for_instenceof/PattternMatchingForInstanceOfTest.java
@@ -8,7 +8,7 @@
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestRuntime.CfRuntime;
-import com.android.tools.r8.examples.jdk16.PatternMatchingForInstenceof;
+import com.android.tools.r8.examples.jdk17.PatternMatchingForInstanceof;
 import com.android.tools.r8.utils.InternalOptions.TestingOptions;
 import com.google.common.collect.ImmutableList;
 import java.nio.file.Path;
@@ -26,15 +26,15 @@
 
   private static List<String> EXPECTED = ImmutableList.of("Hello, world!");
 
-  private static final Path JAR = PatternMatchingForInstenceof.jar();
-  private static final String MAIN = PatternMatchingForInstenceof.Main.typeName();
+  private static final Path JAR = PatternMatchingForInstanceof.jar();
+  private static final String MAIN = PatternMatchingForInstanceof.Main.typeName();
 
   @Parameters(name = "{0}")
   public static List<Object[]> data() {
-    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk16).
+    // TODO(b/174431251): This should be replaced with .withCfRuntimes(start = jdk17).
     return buildParameters(
         getTestParameters()
-            .withCustomRuntime(CfRuntime.getCheckedInJdk16())
+            .withCustomRuntime(CfRuntime.getCheckedInJdk17())
             .withDexRuntimes()
             .withAllApiLevelsAlsoForCf()
             .build());
@@ -45,7 +45,6 @@
     if (parameters.isCfRuntime()) {
       testForJvm()
           .addRunClasspathFiles(JAR)
-          .enablePreview()
           .run(parameters.getRuntime(), MAIN)
           .assertSuccessWithOutputLines(EXPECTED);
     }
@@ -71,7 +70,6 @@
     } else {
       testForJvm()
           .addRunClasspathFiles(builder.compile().writeToZip())
-          .enablePreview()
           .run(parameters.getRuntime(), MAIN)
           .assertSuccessWithOutputLines(EXPECTED);
     }
diff --git a/third_party/openjdk/jdk-17/linux.tar.gz.sha1 b/third_party/openjdk/jdk-17/linux.tar.gz.sha1
new file mode 100644
index 0000000..27451d3
--- /dev/null
+++ b/third_party/openjdk/jdk-17/linux.tar.gz.sha1
@@ -0,0 +1 @@
+fa768e38f9c28e401174cecdd4e326b5fae120e1
\ No newline at end of file
diff --git a/third_party/openjdk/jdk-17/osx.tar.gz.sha1 b/third_party/openjdk/jdk-17/osx.tar.gz.sha1
new file mode 100644
index 0000000..ff2288f
--- /dev/null
+++ b/third_party/openjdk/jdk-17/osx.tar.gz.sha1
@@ -0,0 +1 @@
+7c62e0a6a3168e138f4bad06439650a9e0869333
\ No newline at end of file
diff --git a/third_party/openjdk/jdk-17/windows.tar.gz.sha1 b/third_party/openjdk/jdk-17/windows.tar.gz.sha1
new file mode 100644
index 0000000..0a02a42
--- /dev/null
+++ b/third_party/openjdk/jdk-17/windows.tar.gz.sha1
@@ -0,0 +1 @@
+07d750b353ebd4f5ef9ec99c916e50b33f47a8a8
\ No newline at end of file