diff --git a/src/main/java/com/android/tools/r8/naming/IdentifierMinifier.java b/src/main/java/com/android/tools/r8/naming/IdentifierMinifier.java
index a775a72..4decfe8 100644
--- a/src/main/java/com/android/tools/r8/naming/IdentifierMinifier.java
+++ b/src/main/java/com/android/tools/r8/naming/IdentifierMinifier.java
@@ -13,14 +13,17 @@
 import com.android.tools.r8.code.Instruction;
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.Code;
+import com.android.tools.r8.graph.DexClass;
 import com.android.tools.r8.graph.DexEncodedField;
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexString;
+import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.DexValue;
 import com.android.tools.r8.graph.DexValue.DexItemBasedValueString;
 import com.android.tools.r8.graph.DexValue.DexValueString;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.shaking.ProguardClassFilter;
+import com.android.tools.r8.utils.DescriptorUtils;
 import com.android.tools.r8.utils.ThreadUtils;
 import java.util.ArrayList;
 import java.util.List;
@@ -102,7 +105,23 @@
   }
 
   private DexString getRenamedStringLiteral(DexString originalLiteral) {
-    DexString rewrittenString = lens.lookupDescriptorForJavaTypeName(originalLiteral.toString());
+    String descriptor =
+        DescriptorUtils.javaTypeToDescriptorIfValidJavaType(originalLiteral.toString());
+    if (descriptor == null) {
+      return originalLiteral;
+    }
+    DexType type = appView.dexItemFactory().createType(descriptor);
+    DexType originalType = appView.graphLens().getOriginalType(type);
+    if (originalType != type) {
+      // The type has changed to something clashing with the string.
+      return originalLiteral;
+    }
+    DexType rewrittenType = appView.graphLens().lookupType(type);
+    DexClass clazz = appView.appInfo().definitionForWithoutExistenceAssert(rewrittenType);
+    if (clazz == null || clazz.isNotProgramClass()) {
+      return originalLiteral;
+    }
+    DexString rewrittenString = lens.lookupClassDescriptor(rewrittenType);
     return rewrittenString == null
         ? originalLiteral
         : appView.dexItemFactory().createString(descriptorToJavaType(rewrittenString.toString()));
diff --git a/src/main/java/com/android/tools/r8/naming/MinifiedRenaming.java b/src/main/java/com/android/tools/r8/naming/MinifiedRenaming.java
index cc64864..bf18111 100644
--- a/src/main/java/com/android/tools/r8/naming/MinifiedRenaming.java
+++ b/src/main/java/com/android/tools/r8/naming/MinifiedRenaming.java
@@ -34,7 +34,7 @@
       ClassRenaming classRenaming,
       MethodRenaming methodRenaming,
       FieldRenaming fieldRenaming) {
-    super(appView.dexItemFactory(), classRenaming.classRenaming);
+    super(appView.dexItemFactory());
     this.appView = appView;
     this.packageRenaming = classRenaming.packageRenaming;
     renaming.putAll(classRenaming.classRenaming);
diff --git a/src/main/java/com/android/tools/r8/naming/NamingLens.java b/src/main/java/com/android/tools/r8/naming/NamingLens.java
index b6e94ee..5b24eb9 100644
--- a/src/main/java/com/android/tools/r8/naming/NamingLens.java
+++ b/src/main/java/com/android/tools/r8/naming/NamingLens.java
@@ -21,8 +21,6 @@
 import com.android.tools.r8.utils.InternalOptions;
 import com.google.common.collect.Sets;
 import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.Set;
 
 /**
@@ -42,8 +40,6 @@
 
   public abstract DexString lookupDescriptor(DexType type);
 
-  public abstract DexString lookupDescriptorForJavaTypeName(String typeName);
-
   public DexString lookupClassDescriptor(DexType type) {
     assert type.isClassType();
     return internalLookupClassDescriptor(type);
@@ -185,13 +181,9 @@
   public abstract static class NonIdentityNamingLens extends NamingLens {
 
     private final DexItemFactory dexItemFactory;
-    private final Map<String, DexString> typeStringMapping;
 
-    protected NonIdentityNamingLens(
-        DexItemFactory dexItemFactory, Map<DexType, DexString> typeMapping) {
+    protected NonIdentityNamingLens(DexItemFactory dexItemFactory) {
       this.dexItemFactory = dexItemFactory;
-      typeStringMapping = new HashMap<>();
-      typeMapping.forEach((k, v) -> typeStringMapping.put(k.toSourceString(), v));
     }
 
     protected DexItemFactory dexItemFactory() {
@@ -211,11 +203,6 @@
       assert type.isClassType();
       return lookupClassDescriptor(type);
     }
-
-    @Override
-    public DexString lookupDescriptorForJavaTypeName(String typeName) {
-      return typeStringMapping.get(typeName);
-    }
   }
 
   private static final class IdentityLens extends NamingLens {
@@ -230,11 +217,6 @@
     }
 
     @Override
-    public DexString lookupDescriptorForJavaTypeName(String typeName) {
-      return null;
-    }
-
-    @Override
     protected DexString internalLookupClassDescriptor(DexType type) {
       return type.descriptor;
     }
diff --git a/src/main/java/com/android/tools/r8/naming/PrefixRewritingNamingLens.java b/src/main/java/com/android/tools/r8/naming/PrefixRewritingNamingLens.java
index 04f235f..5ab9772 100644
--- a/src/main/java/com/android/tools/r8/naming/PrefixRewritingNamingLens.java
+++ b/src/main/java/com/android/tools/r8/naming/PrefixRewritingNamingLens.java
@@ -12,7 +12,6 @@
 import com.android.tools.r8.graph.InnerClassAttribute;
 import com.android.tools.r8.naming.NamingLens.NonIdentityNamingLens;
 import com.android.tools.r8.utils.InternalOptions;
-import java.util.IdentityHashMap;
 
 // Naming lens for rewriting type prefixes.
 public class PrefixRewritingNamingLens extends NonIdentityNamingLens {
@@ -34,7 +33,7 @@
   }
 
   public PrefixRewritingNamingLens(NamingLens namingLens, AppView<?> appView) {
-    super(appView.dexItemFactory(), new IdentityHashMap<>());
+    super(appView.dexItemFactory());
     this.appView = appView;
     this.namingLens = namingLens;
     this.options = appView.options();
@@ -96,18 +95,6 @@
   }
 
   @Override
-  public DexString lookupDescriptorForJavaTypeName(String typeName) {
-    if (appView.rewritePrefix.shouldRewriteTypeName(typeName)) {
-      DexType rewrittenType =
-          appView.rewritePrefix.rewrittenType(dexItemFactory().createType(typeName), appView);
-      if (rewrittenType != null) {
-        return rewrittenType.descriptor;
-      }
-    }
-    return namingLens.lookupDescriptorForJavaTypeName(typeName);
-  }
-
-  @Override
   public String lookupPackageName(String packageName) {
     // Used for resource shrinking.
     // Desugared libraries do not have resources.
diff --git a/src/main/java/com/android/tools/r8/naming/RecordRewritingNamingLens.java b/src/main/java/com/android/tools/r8/naming/RecordRewritingNamingLens.java
index e809317..f2a4e8b 100644
--- a/src/main/java/com/android/tools/r8/naming/RecordRewritingNamingLens.java
+++ b/src/main/java/com/android/tools/r8/naming/RecordRewritingNamingLens.java
@@ -13,7 +13,6 @@
 import com.android.tools.r8.graph.InnerClassAttribute;
 import com.android.tools.r8.naming.NamingLens.NonIdentityNamingLens;
 import com.android.tools.r8.utils.InternalOptions;
-import java.util.IdentityHashMap;
 
 // Naming lens for rewriting java.lang.Record to the internal RecordTag type.
 public class RecordRewritingNamingLens extends NonIdentityNamingLens {
@@ -34,7 +33,7 @@
   }
 
   public RecordRewritingNamingLens(NamingLens namingLens, AppView<?> appView) {
-    super(appView.dexItemFactory(), new IdentityHashMap<>());
+    super(appView.dexItemFactory());
     this.namingLens = namingLens;
     factory = appView.dexItemFactory();
   }
@@ -75,14 +74,6 @@
   }
 
   @Override
-  public DexString lookupDescriptorForJavaTypeName(String typeName) {
-    if (typeName.equals(factory.recordType.toSourceString())) {
-      return factory.recordTagType.descriptor;
-    }
-    return namingLens.lookupDescriptorForJavaTypeName(typeName);
-  }
-
-  @Override
   public String lookupPackageName(String packageName) {
     return namingLens.lookupPackageName(packageName);
   }
diff --git a/src/main/java/com/android/tools/r8/relocator/SimplePackagesRewritingMapper.java b/src/main/java/com/android/tools/r8/relocator/SimplePackagesRewritingMapper.java
index 3a5902a..7afb7e3 100644
--- a/src/main/java/com/android/tools/r8/relocator/SimplePackagesRewritingMapper.java
+++ b/src/main/java/com/android/tools/r8/relocator/SimplePackagesRewritingMapper.java
@@ -102,7 +102,7 @@
         Map<DexType, DexString> typeMappings,
         Map<String, String> packageMappings,
         DexItemFactory factory) {
-      super(factory, typeMappings);
+      super(factory);
       this.typeMappings = typeMappings;
       this.packageMappings = packageMappings;
     }
diff --git a/src/test/java/com/android/tools/r8/naming/adaptclassstrings/AdaptClassStringWithRepackagingTest.java b/src/test/java/com/android/tools/r8/naming/adaptclassstrings/AdaptClassStringWithRepackagingTest.java
index 6bcb1a5..06557fa 100644
--- a/src/test/java/com/android/tools/r8/naming/adaptclassstrings/AdaptClassStringWithRepackagingTest.java
+++ b/src/test/java/com/android/tools/r8/naming/adaptclassstrings/AdaptClassStringWithRepackagingTest.java
@@ -36,8 +36,7 @@
         .addKeepRules("-adaptclassstrings")
         .addKeepClassRulesWithAllowObfuscation(Foo.class)
         .run(parameters.getRuntime(), Main.class)
-        // TODO(b/210699098): The class is renamed and so should the output
-        .assertSuccessWithOutputLines(Foo.class.getName())
+        .assertSuccessWithOutputLines("a")
         .inspect(inspector -> assertThat(inspector.clazz(Foo.class), isPresentAndRenamed()));
   }
 
diff --git a/src/test/java/com/android/tools/r8/naming/adaptclassstrings/RepackageMinificationNameClashTest.java b/src/test/java/com/android/tools/r8/naming/adaptclassstrings/RepackageMinificationNameClashTest.java
index 00dc064..1f23283 100644
--- a/src/test/java/com/android/tools/r8/naming/adaptclassstrings/RepackageMinificationNameClashTest.java
+++ b/src/test/java/com/android/tools/r8/naming/adaptclassstrings/RepackageMinificationNameClashTest.java
@@ -34,8 +34,7 @@
         .addKeepClassRulesWithAllowObfuscation(Foo.class)
         .addKeepMainRule(Main.class)
         .run(parameters.getRuntime(), Main.class)
-        // TODO(b/210699098): Should be RepackageMinificationNameClashTest$Foo.
-        .assertSuccessWithOutputLines("a");
+        .assertSuccessWithOutputLines("RepackageMinificationNameClashTest$Foo");
   }
 
   public static class Foo {}
