diff --git a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
index d72df8c..4879d46 100644
--- a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
+++ b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
@@ -883,6 +883,7 @@
           boxedShortType,
           boxedVoidType,
           enumType,
+          javaLangSystemType,
           npeType,
           objectType,
           stringBufferType,
diff --git a/src/test/java/com/android/tools/r8/kotlin/R8KotlinAccessorTest.java b/src/test/java/com/android/tools/r8/kotlin/R8KotlinAccessorTest.java
index 50b5572..8c843eb 100644
--- a/src/test/java/com/android/tools/r8/kotlin/R8KotlinAccessorTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/R8KotlinAccessorTest.java
@@ -9,7 +9,6 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assume.assumeTrue;
 
 import com.android.tools.r8.KotlinTestParameters;
 import com.android.tools.r8.R8TestBuilder;
@@ -81,8 +80,6 @@
       KotlinTestParameters kotlinParameters,
       boolean allowAccessModification) {
     super(parameters, kotlinParameters, allowAccessModification);
-    // TODO(b/207736382): Figure out why we cannot inline/merge.
-    assumeTrue(kotlinParameters.getCompiler().isNot(KOTLINC_1_6_0));
   }
 
   @Test
@@ -374,22 +371,30 @@
               }
 
               ClassSubject classSubject = checkClassIsKept(inspector, testedClass.getClassName());
+
+              // For kotlin 1.6 we completely remove the field and accessors. We are unable to
+              // remove the entire class because we are not reprocessing TestMain.main.
               String propertyName = "property";
+              if (kotlinParameters.isNewerThanOrEqualTo(KOTLINC_1_6_0)) {
+                checkFieldIsAbsent(classSubject, JAVA_LANG_STRING, propertyName);
+                return;
+              }
+
               FieldSubject fieldSubject =
                   checkFieldIsKept(classSubject, JAVA_LANG_STRING, propertyName);
               assertFalse(fieldSubject.getField().accessFlags.isStatic());
+              assertTrue(fieldSubject.getField().accessFlags.isPrivate());
 
               AccessorKind accessorKind =
-                  kotlinc.getCompilerVersion() == KOTLINC_1_5_0
+                  kotlinc.getCompilerVersion().isGreaterThanOrEqualTo(KOTLINC_1_5_0)
                       ? AccessorKind.FROM_INNER
                       : AccessorKind.FROM_LAMBDA;
               MemberNaming.MethodSignature getterAccessor =
                   testedClass.getGetterAccessorForProperty(propertyName, accessorKind);
               MemberNaming.MethodSignature setterAccessor =
                   testedClass.getSetterAccessorForProperty(propertyName, accessorKind);
-                assertTrue(fieldSubject.getField().accessFlags.isPrivate());
-                checkMethodIsKept(classSubject, getterAccessor);
-                checkMethodIsKept(classSubject, setterAccessor);
+              checkMethodIsKept(classSubject, getterAccessor);
+              checkMethodIsKept(classSubject, setterAccessor);
             });
   }
 
diff --git a/src/test/java/com/android/tools/r8/kotlin/R8KotlinPropertiesTest.java b/src/test/java/com/android/tools/r8/kotlin/R8KotlinPropertiesTest.java
index 66da10d..5a60483 100644
--- a/src/test/java/com/android/tools/r8/kotlin/R8KotlinPropertiesTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/R8KotlinPropertiesTest.java
@@ -4,9 +4,7 @@
 
 package com.android.tools.r8.kotlin;
 
-import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.KOTLINC_1_6_0;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assume.assumeTrue;
 
 import com.android.tools.r8.KotlinTestParameters;
 import com.android.tools.r8.TestParameters;
@@ -109,8 +107,6 @@
       KotlinTestParameters kotlinParameters,
       boolean allowAccessModification) {
     super(parameters, kotlinParameters, allowAccessModification);
-    // TODO(b/207736382): Figure out why we cannot inline/merge.
-    assumeTrue(kotlinParameters.getCompiler().isNot(KOTLINC_1_6_0));
   }
 
   @Test
