diff --git a/src/test/java/com/android/tools/r8/enumunboxing/kotlin/SimpleKotlinEnumUnboxingTest.java b/src/test/java/com/android/tools/r8/enumunboxing/kotlin/SimpleKotlinEnumUnboxingTest.java
index de13512..1dd4b1e 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/kotlin/SimpleKotlinEnumUnboxingTest.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/kotlin/SimpleKotlinEnumUnboxingTest.java
@@ -66,12 +66,14 @@
     testForR8(parameters.getBackend())
         .addProgramFiles(
             jars.getForConfiguration(kotlinParameters),
-            kotlinParameters.getCompiler().getKotlinStdlibJar())
+            kotlinParameters.getCompiler().getKotlinStdlibJar(),
+            kotlinParameters.getCompiler().getKotlinAnnotationJar())
         .addKeepMainRule(PKG + ".MainKt")
         .addKeepRules(enumKeepRules.getKeepRules())
         .addKeepRuntimeVisibleAnnotations()
         .addOptionsModification(opt -> enableEnumOptions(opt, enumValueOptimization))
-        .addEnumUnboxingInspector(inspector -> inspector.assertUnboxed(PKG + ".Color"))
+        // TODO(b/268005228): We should be able to unbox.
+        .addEnumUnboxingInspector(inspector -> inspector.assertNotUnboxed(PKG + ".Color"))
         .allowDiagnosticMessages()
         .setMinApi(parameters.getApiLevel())
         .compile()
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDelegatedPropertyTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDelegatedPropertyTest.java
index 7b07978..36efb33 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDelegatedPropertyTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDelegatedPropertyTest.java
@@ -122,19 +122,24 @@
             .addProgramFiles(libJars.getForConfiguration(kotlinc, targetVersion))
             .compile()
             .writeToZip();
+    Path outputPath = temp.newFolder().toPath();
     ProcessResult compileResult =
         kotlinc(parameters.getRuntime().asCf(), kotlinc, targetVersion)
             .addClasspathFiles(outputJar)
             .addSourceFiles(
                 getKotlinFileInTest(DescriptorUtils.getBinaryNameFromJavaType(PKG_APP), "main"))
-            .setOutputPath(temp.newFolder().toPath())
+            .setOutputPath(outputPath)
             .compileRaw();
-    Assert.assertEquals(1, compileResult.exitCode);
     if (kotlinParameters.isNewerThan(KOTLINC_1_8_0)) {
-      assertThat(
-          compileResult.stderr,
-          containsString("the feature \"references to synthetic java properties\""));
+      testForJvm()
+          .addRunClasspathFiles(
+              kotlinc.getKotlinStdlibJar(), kotlinc.getKotlinReflectJar(), outputJar)
+          .addClasspath(outputPath)
+          .run(parameters.getRuntime(), PKG_APP + ".MainKt")
+          .assertSuccessWithOutputLines(
+              "foobar", "property oldName (Kotlin reflection is not available)");
     } else {
+      Assert.assertEquals(1, compileResult.exitCode);
       assertThat(
           compileResult.stderr,
           containsString(
diff --git a/src/test/java/com/android/tools/r8/kotlin/optimize/switches/KotlinEnumSwitchTest.java b/src/test/java/com/android/tools/r8/kotlin/optimize/switches/KotlinEnumSwitchTest.java
index 0963963..9caf355 100644
--- a/src/test/java/com/android/tools/r8/kotlin/optimize/switches/KotlinEnumSwitchTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/optimize/switches/KotlinEnumSwitchTest.java
@@ -61,6 +61,10 @@
             })
         .setMinApi(parameters.getApiLevel())
         .addDontObfuscate()
+        // This will probably start failing when the CL
+        // https://github.com/JetBrains/kotlin/commit/79f6d4b590573e6adccd7e8899d3b15ddb42d185
+        // is propagated to the build for kotlin-reflect.
+        .applyIf(parameters.isDexRuntime(), b -> b.addDontWarn("java.lang.ClassValue"))
         .allowDiagnosticWarningMessages()
         .compile()
         .assertAllWarningMessagesMatch(equalTo("Resource 'META-INF/MANIFEST.MF' already exists."))
