Rename TypeRewriter to DesugaredLibraryTypeRewriter

This also moves the class to desugar.desugaredlibrary.

Change-Id: I768a12d11b4de5248b7251aadee3cb4007f4a113
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index fb4fba5..ae366a3 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -24,15 +24,15 @@
 import com.android.tools.r8.inspector.internal.InspectorImpl;
 import com.android.tools.r8.ir.analysis.value.AbstractValueFactory;
 import com.android.tools.r8.ir.conversion.PrimaryD8L8IRConverter;
-import com.android.tools.r8.ir.desugar.TypeRewriter;
 import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryAmender;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryTypeRewriter;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.PrefixRewritingNamingLens;
 import com.android.tools.r8.ir.optimize.AssertionsRewriter;
 import com.android.tools.r8.ir.optimize.info.OptimizationFeedbackSimple;
 import com.android.tools.r8.jar.CfApplicationWriter;
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
 import com.android.tools.r8.kotlin.KotlinMetadataRewriter;
 import com.android.tools.r8.naming.NamingLens;
-import com.android.tools.r8.naming.PrefixRewritingNamingLens;
 import com.android.tools.r8.naming.RecordRewritingNamingLens;
 import com.android.tools.r8.naming.VarHandleDesugaringRewritingNamingLens;
 import com.android.tools.r8.naming.signature.GenericSignatureRewriter;
@@ -178,7 +178,8 @@
     timing.begin("Load desugared lib");
     options.getLibraryDesugaringOptions().loadMachineDesugaredLibrarySpecification(timing, app);
     timing.end();
-    TypeRewriter typeRewriter = options.getLibraryDesugaringOptions().getTypeRewriter();
+    DesugaredLibraryTypeRewriter typeRewriter =
+        options.getLibraryDesugaringOptions().getTypeRewriter();
     AppInfo appInfo =
         timing.time(
             "Create app-info",
@@ -280,7 +281,7 @@
       if (options.isGeneratingDex()
           && hasDexResources
           && hasClassResources
-          && appView.typeRewriter.isRewriting()) {
+          && appView.desugaredLibraryTypeRewriter.isRewriting()) {
         // There are both cf and dex inputs in the program, and rewriting is required for
         // desugared library only on cf inputs. We cannot easily rewrite part of the program
         // without iterating again the IR. We fall-back to writing one app with rewriting and
diff --git a/src/main/java/com/android/tools/r8/GlobalSyntheticsGenerator.java b/src/main/java/com/android/tools/r8/GlobalSyntheticsGenerator.java
index 05190a1..0728314 100644
--- a/src/main/java/com/android/tools/r8/GlobalSyntheticsGenerator.java
+++ b/src/main/java/com/android/tools/r8/GlobalSyntheticsGenerator.java
@@ -33,7 +33,7 @@
 import com.android.tools.r8.graph.NestHostClassAttribute;
 import com.android.tools.r8.graph.ThrowExceptionCode;
 import com.android.tools.r8.ir.conversion.PrimaryD8L8IRConverter;
-import com.android.tools.r8.ir.desugar.TypeRewriter;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryTypeRewriter;
 import com.android.tools.r8.ir.desugar.records.RecordDesugaringEventConsumer;
 import com.android.tools.r8.ir.desugar.records.RecordTagSynthesizer;
 import com.android.tools.r8.ir.desugar.varhandle.VarHandleDesugaring;
@@ -157,7 +157,8 @@
     ApplicationReader applicationReader = new ApplicationReader(inputApp, options, timing);
     DirectMappedDexApplication app = applicationReader.read(executor).toDirect();
     timing.end();
-    TypeRewriter typeRewriter = options.getLibraryDesugaringOptions().getTypeRewriter();
+    DesugaredLibraryTypeRewriter typeRewriter =
+        options.getLibraryDesugaringOptions().getTypeRewriter();
     AppInfo appInfo =
         timing.time(
             "Create app-info",
diff --git a/src/main/java/com/android/tools/r8/L8.java b/src/main/java/com/android/tools/r8/L8.java
index ddd2641..ddeac33 100644
--- a/src/main/java/com/android/tools/r8/L8.java
+++ b/src/main/java/com/android/tools/r8/L8.java
@@ -12,11 +12,11 @@
 import com.android.tools.r8.graph.DexApplication;
 import com.android.tools.r8.graph.LazyLoadedDexApplication;
 import com.android.tools.r8.ir.conversion.PrimaryD8L8IRConverter;
-import com.android.tools.r8.ir.desugar.TypeRewriter;
 import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryAmender;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryTypeRewriter;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.PrefixRewritingNamingLens;
 import com.android.tools.r8.jar.CfApplicationWriter;
 import com.android.tools.r8.keepanno.annotations.KeepForApi;
-import com.android.tools.r8.naming.PrefixRewritingNamingLens;
 import com.android.tools.r8.naming.VarHandleDesugaringRewritingNamingLens;
 import com.android.tools.r8.naming.signature.GenericSignatureRewriter;
 import com.android.tools.r8.origin.CommandLineOrigin;
@@ -167,7 +167,8 @@
     LazyLoadedDexApplication lazyApp =
         new ApplicationReader(inputApp, options, timing).read(executor);
     options.getLibraryDesugaringOptions().loadMachineDesugaredLibrarySpecification(timing, lazyApp);
-    TypeRewriter typeRewriter = options.getLibraryDesugaringOptions().getTypeRewriter();
+    DesugaredLibraryTypeRewriter typeRewriter =
+        options.getLibraryDesugaringOptions().getTypeRewriter();
 
     DexApplication app = new L8TreePruner(options).prune(lazyApp, typeRewriter);
     return AppView.createForL8(
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index ed134b1..1359ad8 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -46,6 +46,7 @@
 import com.android.tools.r8.ir.desugar.CfClassSynthesizerDesugaringCollection;
 import com.android.tools.r8.ir.desugar.CfClassSynthesizerDesugaringEventConsumer;
 import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryAmender;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.PrefixRewritingNamingLens;
 import com.android.tools.r8.ir.desugar.itf.InterfaceMethodRewriter;
 import com.android.tools.r8.ir.desugar.records.RecordFieldValuesRewriter;
 import com.android.tools.r8.ir.desugar.records.RecordInstructionDesugaring;
@@ -64,7 +65,6 @@
 import com.android.tools.r8.kotlin.KotlinMetadataUtils;
 import com.android.tools.r8.naming.IdentifierMinifier;
 import com.android.tools.r8.naming.Minifier;
-import com.android.tools.r8.naming.PrefixRewritingNamingLens;
 import com.android.tools.r8.naming.ProguardMapMinifier;
 import com.android.tools.r8.naming.RecordRewritingNamingLens;
 import com.android.tools.r8.naming.signature.GenericSignatureRewriter;
diff --git a/src/main/java/com/android/tools/r8/graph/AppView.java b/src/main/java/com/android/tools/r8/graph/AppView.java
index c6e640a..17b3c2d 100644
--- a/src/main/java/com/android/tools/r8/graph/AppView.java
+++ b/src/main/java/com/android/tools/r8/graph/AppView.java
@@ -32,7 +32,7 @@
 import com.android.tools.r8.ir.analysis.value.AbstractValueJoiner.AbstractValueConstantPropagationJoiner;
 import com.android.tools.r8.ir.analysis.value.AbstractValueJoiner.AbstractValueFieldJoiner;
 import com.android.tools.r8.ir.analysis.value.AbstractValueJoiner.AbstractValueParameterJoiner;
-import com.android.tools.r8.ir.desugar.TypeRewriter;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryTypeRewriter;
 import com.android.tools.r8.ir.optimize.enums.EnumDataMap;
 import com.android.tools.r8.ir.optimize.info.MethodResolutionOptimizationInfoCollection;
 import com.android.tools.r8.ir.optimize.info.field.InstanceFieldInitializationInfoFactory;
@@ -131,7 +131,7 @@
       new SimpleInliningConstraintFactory();
 
   // Desugaring.
-  public final TypeRewriter typeRewriter;
+  public final DesugaredLibraryTypeRewriter desugaredLibraryTypeRewriter;
 
   // Modeling.
   private final LibraryMethodSideEffectModelCollection libraryMethodSideEffectModelCollection;
@@ -175,7 +175,7 @@
       ArtProfileCollection artProfileCollection,
       StartupProfile startupProfile,
       WholeProgramOptimizations wholeProgramOptimizations,
-      TypeRewriter mapper) {
+      DesugaredLibraryTypeRewriter mapper) {
     this(
         appInfo,
         artProfileCollection,
@@ -190,7 +190,7 @@
       ArtProfileCollection artProfileCollection,
       StartupProfile startupProfile,
       WholeProgramOptimizations wholeProgramOptimizations,
-      TypeRewriter mapper,
+      DesugaredLibraryTypeRewriter mapper,
       Timing timing) {
     assert appInfo != null;
     this.appInfo = appInfo;
@@ -214,7 +214,7 @@
             "Dont warn config",
             () -> DontWarnConfiguration.create(options().getProguardConfiguration()));
     this.initClassLens = timing.time("Init class lens", InitClassLens::getThrowingInstance);
-    this.typeRewriter = mapper;
+    this.desugaredLibraryTypeRewriter = mapper;
     timing.begin("Create argument propagator");
     if (enableWholeProgramOptimizations() && options().callSiteOptimizationOptions().isEnabled()) {
       this.argumentPropagator = new ArgumentPropagator(withLiveness());
@@ -247,7 +247,7 @@
     return libraryMemberOptimizer.isModeled(type);
   }
 
-  private static TypeRewriter defaultTypeRewriter(AppInfo appInfo) {
+  private static DesugaredLibraryTypeRewriter defaultTypeRewriter(AppInfo appInfo) {
     return appInfo.options().getLibraryDesugaringOptions().getTypeRewriter();
   }
 
@@ -277,7 +277,7 @@
   }
 
   public static <T extends AppInfo> AppView<T> createForD8(
-      T appInfo, TypeRewriter mapper, Timing timing) {
+      T appInfo, DesugaredLibraryTypeRewriter mapper, Timing timing) {
     return new AppView<>(
         appInfo,
         ArtProfileCollection.createInitialArtProfileCollection(appInfo, appInfo.options()),
@@ -309,7 +309,8 @@
         defaultTypeRewriter(appInfo));
   }
 
-  public static <T extends AppInfo> AppView<T> createForL8(T appInfo, TypeRewriter mapper) {
+  public static <T extends AppInfo> AppView<T> createForL8(
+      T appInfo, DesugaredLibraryTypeRewriter mapper) {
     return new AppView<>(
         appInfo,
         ArtProfileCollection.createInitialArtProfileCollection(appInfo, appInfo.options()),
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
index 7ce7bcc..ee7aa09 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
@@ -65,6 +65,7 @@
 import com.android.tools.r8.ir.desugar.backports.OptionalMethodRewrites;
 import com.android.tools.r8.ir.desugar.backports.SparseArrayMethodRewrites;
 import com.android.tools.r8.ir.desugar.backports.TypedArrayMethodRewrites;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryTypeRewriter;
 import com.android.tools.r8.ir.desugar.desugaredlibrary.retargeter.DesugaredLibraryRetargeter;
 import com.android.tools.r8.position.MethodPosition;
 import com.android.tools.r8.synthesis.SyntheticItems.GlobalSyntheticsStrategy;
@@ -212,7 +213,8 @@
     options
         .getLibraryDesugaringOptions()
         .loadMachineDesugaredLibrarySpecification(Timing.empty(), app);
-    TypeRewriter typeRewriter = options.getLibraryDesugaringOptions().getTypeRewriter();
+    DesugaredLibraryTypeRewriter typeRewriter =
+        options.getLibraryDesugaringOptions().getTypeRewriter();
     AppInfo appInfo =
         AppInfo.createInitialAppInfo(app, GlobalSyntheticsStrategy.forNonSynthesizing());
     AppView<?> appView = AppView.createForD8(appInfo, typeRewriter, Timing.empty());
@@ -417,7 +419,7 @@
     }
 
     private boolean typeIsInDesugaredLibrary(DexType type) {
-      return appView.typeRewriter.hasRewrittenType(type, appView)
+      return appView.desugaredLibraryTypeRewriter.hasRewrittenType(type, appView)
           || appView
               .options()
               .getLibraryDesugaringOptions()
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java b/src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java
index fe9f928..f31a4a7 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java
@@ -68,7 +68,7 @@
         desugarings.add(interfaceMethodProcessorFacade);
       }
       DesugaredLibraryAPICallbackSynthesizer apiCallbackSynthesizor =
-          appView.typeRewriter.isRewriting()
+          appView.desugaredLibraryTypeRewriter.isRewriting()
               ? new DesugaredLibraryAPICallbackSynthesizer(appView, isLiveMethod)
               : null;
       // At this point the desugaredLibraryAPIConverter is required to be last to generate
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/NonEmptyCfInstructionDesugaringCollection.java b/src/main/java/com/android/tools/r8/ir/desugar/NonEmptyCfInstructionDesugaringCollection.java
index 97f5a0c..ece7ef6 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/NonEmptyCfInstructionDesugaringCollection.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/NonEmptyCfInstructionDesugaringCollection.java
@@ -150,7 +150,7 @@
       desugarings.add(new OutlineArrayCloneFromInterfaceMethodDesugaring(appView));
     }
     desugaredLibraryAPIConverter =
-        appView.typeRewriter.isRewriting()
+        appView.desugaredLibraryTypeRewriter.isRewriting()
             ? new DesugaredLibraryAPIConverter(
                 appView,
                 SetUtils.newImmutableSetExcludingNullItems(
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/TypeRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryTypeRewriter.java
similarity index 90%
rename from src/main/java/com/android/tools/r8/ir/desugar/TypeRewriter.java
rename to src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryTypeRewriter.java
index d075274..daebdd3 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/TypeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryTypeRewriter.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 com.android.tools.r8.ir.desugar;
+package com.android.tools.r8.ir.desugar.desugaredlibrary;
 
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexProto;
@@ -12,9 +12,9 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Consumer;
 
-public abstract class TypeRewriter {
+public abstract class DesugaredLibraryTypeRewriter {
 
-  public static TypeRewriter empty() {
+  public static DesugaredLibraryTypeRewriter empty() {
     return new EmptyTypeRewriter();
   }
 
@@ -44,7 +44,7 @@
 
   public abstract void forAllRewrittenTypes(Consumer<DexType> consumer);
 
-  public static class MachineTypeRewriter extends TypeRewriter {
+  public static class MachineTypeRewriter extends DesugaredLibraryTypeRewriter {
 
     private final Map<DexType, DexType> rewriteType;
     private final Map<DexType, DexType> rewriteDerivedTypeOnly;
@@ -100,7 +100,7 @@
     }
   }
 
-  public static class EmptyTypeRewriter extends TypeRewriter {
+  public static class EmptyTypeRewriter extends DesugaredLibraryTypeRewriter {
 
     @Override
     public DexType rewrittenType(DexType type, AppView<?> appView) {
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/LibraryDesugaringOptions.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/LibraryDesugaringOptions.java
index 97f0ed0..9bf4ee5 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/LibraryDesugaringOptions.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/LibraryDesugaringOptions.java
@@ -4,8 +4,7 @@
 package com.android.tools.r8.ir.desugar.desugaredlibrary;
 
 import com.android.tools.r8.graph.DexApplication;
-import com.android.tools.r8.ir.desugar.TypeRewriter;
-import com.android.tools.r8.ir.desugar.TypeRewriter.MachineTypeRewriter;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryTypeRewriter.MachineTypeRewriter;
 import com.android.tools.r8.ir.desugar.desugaredlibrary.machinespecification.MachineDesugaredLibrarySpecification;
 import com.android.tools.r8.utils.DescriptorUtils;
 import com.android.tools.r8.utils.InternalOptions;
@@ -108,9 +107,9 @@
     timing.end();
   }
 
-  public TypeRewriter getTypeRewriter() {
+  public DesugaredLibraryTypeRewriter getTypeRewriter() {
     return machineDesugaredLibrarySpecification.requiresTypeRewriting()
         ? new MachineTypeRewriter(machineDesugaredLibrarySpecification)
-        : TypeRewriter.empty();
+        : DesugaredLibraryTypeRewriter.empty();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/naming/PrefixRewritingNamingLens.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/PrefixRewritingNamingLens.java
similarity index 87%
rename from src/main/java/com/android/tools/r8/naming/PrefixRewritingNamingLens.java
rename to src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/PrefixRewritingNamingLens.java
index a21ad04..77e22b9 100644
--- a/src/main/java/com/android/tools/r8/naming/PrefixRewritingNamingLens.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/PrefixRewritingNamingLens.java
@@ -1,8 +1,8 @@
-// Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
+// 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 com.android.tools.r8.naming;
+package com.android.tools.r8.ir.desugar.desugaredlibrary;
 
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexField;
@@ -10,6 +10,7 @@
 import com.android.tools.r8.graph.DexString;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.InnerClassAttribute;
+import com.android.tools.r8.naming.NamingLens;
 import com.android.tools.r8.naming.NamingLens.NonIdentityNamingLens;
 import com.android.tools.r8.utils.InternalOptions;
 
@@ -20,7 +21,7 @@
   private final NamingLens namingLens;
 
   public static void commitPrefixRewritingNamingLens(AppView<?> appView) {
-    if (!appView.typeRewriter.isRewriting()) {
+    if (!appView.desugaredLibraryTypeRewriter.isRewriting()) {
       return;
     }
     InternalOptions options = appView.options();
@@ -43,8 +44,8 @@
 
   private DexString getRenaming(DexType type) {
     DexString descriptor = null;
-    if (appView.typeRewriter.hasRewrittenType(type, appView)) {
-      descriptor = appView.typeRewriter.rewrittenType(type, appView).descriptor;
+    if (appView.desugaredLibraryTypeRewriter.hasRewrittenType(type, appView)) {
+      descriptor = appView.desugaredLibraryTypeRewriter.rewrittenType(type, appView).descriptor;
     }
     return descriptor;
   }
@@ -104,7 +105,7 @@
   }
 
   private boolean verifyNotPrefixRewrittenPackage(String packageName) {
-    appView.typeRewriter.forAllRewrittenTypes(
+    appView.desugaredLibraryTypeRewriter.forAllRewrittenTypes(
         dexType -> {
           assert !dexType.getPackageDescriptor().equals(packageName);
         });
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
index 7f40824..dac6a77 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
@@ -121,7 +121,8 @@
         || definition.isLibraryMethodOverride().isFalse()) {
       return false;
     }
-    if (!appView.typeRewriter.hasRewrittenTypeInSignature(definition.getProto(), appView)
+    if (!appView.desugaredLibraryTypeRewriter.hasRewrittenTypeInSignature(
+            definition.getProto(), appView)
         || appView
             .options()
             .getLibraryDesugaringOptions()
@@ -185,7 +186,7 @@
       DexEncodedMethod dexEncodedMethod = dexClass.lookupVirtualMethod(method.getReference());
       if (dexEncodedMethod != null) {
         // In this case, the object will be wrapped.
-        if (appView.typeRewriter.hasRewrittenType(dexClass.type, appView)) {
+        if (appView.desugaredLibraryTypeRewriter.hasRewrittenType(dexClass.type, appView)) {
           return false;
         }
         if (dexEncodedMethod.isFinal()) {
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPIConverter.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPIConverter.java
index 6dbdf07..84f4887 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPIConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPIConverter.java
@@ -148,7 +148,8 @@
       return false;
     }
     DexType holderType = invokedMethod.getHolderType();
-    if (appView.typeRewriter.hasRewrittenType(holderType, appView) || holderType.isArrayType()) {
+    if (appView.desugaredLibraryTypeRewriter.hasRewrittenType(holderType, appView)
+        || holderType.isArrayType()) {
       return false;
     }
     DexClass dexClass = appView.definitionFor(holderType);
@@ -170,7 +171,8 @@
         != null) {
       return true;
     }
-    return appView.typeRewriter.hasRewrittenTypeInSignature(invokedMethod.getProto(), appView);
+    return appView.desugaredLibraryTypeRewriter.hasRewrittenTypeInSignature(
+        invokedMethod.getProto(), appView);
   }
 
   // The problem is that a method can resolve into a library method which is not present at runtime,
@@ -202,14 +204,14 @@
     DexType[] newParameters = originalMethod.proto.parameters.values.clone();
     int index = 0;
     for (DexType param : originalMethod.proto.parameters.values) {
-      if (appView.typeRewriter.hasRewrittenType(param, appView)) {
+      if (appView.desugaredLibraryTypeRewriter.hasRewrittenType(param, appView)) {
         newParameters[index] = vivifiedTypeFor(param, appView);
       }
       index++;
     }
     DexType returnType = originalMethod.proto.returnType;
     DexType newReturnType =
-        appView.typeRewriter.hasRewrittenType(returnType, appView)
+        appView.desugaredLibraryTypeRewriter.hasRewrittenType(returnType, appView)
             ? vivifiedTypeFor(returnType, appView)
             : returnType;
     DexProto newProto = appView.dexItemFactory().createProto(newReturnType, newParameters);
@@ -242,7 +244,7 @@
             .createSynthesizedType(
                 DescriptorUtils.javaTypeToDescriptor(VIVIFIED_PREFIX + type.toString()));
     // We would need to ensure a classpath class for each type to remove this rewriteType call.
-    appView.typeRewriter.rewriteType(vivifiedType, type);
+    appView.desugaredLibraryTypeRewriter.rewriteType(vivifiedType, type);
     return vivifiedType;
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryConversionCfProvider.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryConversionCfProvider.java
index 521ec58..b9f5b97 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryConversionCfProvider.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryConversionCfProvider.java
@@ -162,7 +162,7 @@
     DexMethod[] parameterConversions =
         computeParameterConversions(method, true, eventConsumer, context, contextSupplier);
     DexType newHolder =
-        appView.typeRewriter.hasRewrittenType(method.getHolderType(), appView)
+        appView.desugaredLibraryTypeRewriter.hasRewrittenType(method.getHolderType(), appView)
             ? vivifiedTypeFor(method.getHolderType(), appView)
             : method.getHolderType();
     DexMethod forwardMethod =
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryWrapperSynthesizer.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryWrapperSynthesizer.java
index 97053e5..cf62061 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryWrapperSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryWrapperSynthesizer.java
@@ -158,7 +158,7 @@
     if (apiGenericTypesConversion != null) {
       return true;
     }
-    if (!appView.typeRewriter.hasRewrittenType(type, appView)) {
+    if (!appView.desugaredLibraryTypeRewriter.hasRewrittenType(type, appView)) {
       return false;
     }
     if (canConvert(type)) {
@@ -371,7 +371,7 @@
   }
 
   private void reportInvalidInvoke(DexType type, DexMethod invokedMethod, ProgramMethod context) {
-    DexType desugaredType = appView.typeRewriter.rewrittenType(type, appView);
+    DexType desugaredType = appView.desugaredLibraryTypeRewriter.rewrittenType(type, appView);
     Origin origin = context != null ? context.getOrigin() : Origin.unknown();
     Position position =
         context != null ? new MethodPosition(context.getMethodReference()) : Position.UNKNOWN;
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/disabledesugarer/DesugaredLibraryDisableDesugarerHelper.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/disabledesugarer/DesugaredLibraryDisableDesugarerHelper.java
index 2bf5df0..6b09004 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/disabledesugarer/DesugaredLibraryDisableDesugarerHelper.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/disabledesugarer/DesugaredLibraryDisableDesugarerHelper.java
@@ -115,6 +115,6 @@
   }
 
   boolean isRewrittenType(DexType type) {
-    return appView.typeRewriter.hasRewrittenType(type, appView);
+    return appView.desugaredLibraryTypeRewriter.hasRewrittenType(type, appView);
   }
 }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
index 19f8486..f0d57f9 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
@@ -136,7 +136,7 @@
         .contains(clazz.type)) {
       return true;
     }
-    return appView.typeRewriter.hasRewrittenType(clazz.type, appView);
+    return appView.desugaredLibraryTypeRewriter.hasRewrittenType(clazz.type, appView);
   }
 
   final boolean isCompatibleDefaultMethod(DexEncodedMethod method) {
@@ -679,7 +679,7 @@
 
     return type -> {
       DexString descriptor = type.getDescriptor();
-      return appView.typeRewriter.hasRewrittenType(type, appView)
+      return appView.desugaredLibraryTypeRewriter.hasRewrittenType(type, appView)
           || descriptor.endsWith(companionClassNameDescriptorSuffix)
           || isRewrittenEmulatedInterface(type)
           || options
diff --git a/src/main/java/com/android/tools/r8/naming/Minifier.java b/src/main/java/com/android/tools/r8/naming/Minifier.java
index 9f31587..cd868e1 100644
--- a/src/main/java/com/android/tools/r8/naming/Minifier.java
+++ b/src/main/java/com/android/tools/r8/naming/Minifier.java
@@ -354,7 +354,7 @@
       super(appView.options().getProguardConfiguration().getObfuscationDictionary(), false);
       this.appView = appView;
       this.factory = appView.dexItemFactory();
-      this.desugaredLibraryRenaming = appView.typeRewriter.isRewriting();
+      this.desugaredLibraryRenaming = appView.desugaredLibraryTypeRewriter.isRewriting();
     }
 
     @Override
@@ -404,7 +404,8 @@
       }
       if (desugaredLibraryRenaming
           && method.getDefinition().isLibraryMethodOverride().isTrue()
-          && appView.typeRewriter.hasRewrittenTypeInSignature(method.getProto(), appView)) {
+          && appView.desugaredLibraryTypeRewriter.hasRewrittenTypeInSignature(
+              method.getProto(), appView)) {
         // With desugared library, call-backs names are reserved here.
         return method.getName();
       }
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index 3f5389f..a47ffa7 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -3233,7 +3233,7 @@
       // maintains the library override. In the second enqueuer phase, the signature has been
       // desugared, and the second resolution maintains the the library override.
       if (instantiation.isClass()
-          && appView.typeRewriter.hasRewrittenTypeInSignature(
+          && appView.desugaredLibraryTypeRewriter.hasRewrittenTypeInSignature(
               method.getReference().proto, appView)) {
         DexMethod methodToResolve =
             DesugaredLibraryAPIConverter.methodWithVivifiedTypeInSignature(
diff --git a/src/main/java/com/android/tools/r8/shaking/L8TreePruner.java b/src/main/java/com/android/tools/r8/shaking/L8TreePruner.java
index 3691919..bbdc65a 100644
--- a/src/main/java/com/android/tools/r8/shaking/L8TreePruner.java
+++ b/src/main/java/com/android/tools/r8/shaking/L8TreePruner.java
@@ -7,7 +7,7 @@
 import com.android.tools.r8.graph.DexApplication;
 import com.android.tools.r8.graph.DexProgramClass;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.ir.desugar.TypeRewriter;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibraryTypeRewriter;
 import com.android.tools.r8.utils.InternalOptions;
 import java.util.ArrayList;
 import java.util.IdentityHashMap;
@@ -27,7 +27,7 @@
     this.options = options;
   }
 
-  public DexApplication prune(DexApplication app, TypeRewriter typeRewriter) {
+  public DexApplication prune(DexApplication app, DesugaredLibraryTypeRewriter typeRewriter) {
     Set<DexType> maintainType =
         options
             .getLibraryDesugaringOptions()
diff --git a/src/main/java/com/android/tools/r8/shaking/MissingClasses.java b/src/main/java/com/android/tools/r8/shaking/MissingClasses.java
index 266789f..7a8fc54 100644
--- a/src/main/java/com/android/tools/r8/shaking/MissingClasses.java
+++ b/src/main/java/com/android/tools/r8/shaking/MissingClasses.java
@@ -317,7 +317,7 @@
     private static void addWithRewrittenType(
         ImmutableSet.Builder<DexType> builder, DexType type, AppView<?> appView) {
       builder.add(type);
-      DexType rewrittenType = appView.typeRewriter.rewrittenType(type, appView);
+      DexType rewrittenType = appView.desugaredLibraryTypeRewriter.rewrittenType(type, appView);
       if (rewrittenType != null) {
         builder.add(rewrittenType);
       }
diff --git a/src/main/java/com/android/tools/r8/synthesis/SynthesizingContext.java b/src/main/java/com/android/tools/r8/synthesis/SynthesizingContext.java
index 56ad8ec..99ea49e 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SynthesizingContext.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SynthesizingContext.java
@@ -149,7 +149,8 @@
       return;
     }
     assert hygienicType.toSourceString().startsWith(synthesizingContextType.toSourceString());
-    DexType rewrittenContext = appView.typeRewriter.rewrittenContextType(synthesizingContextType);
+    DexType rewrittenContext =
+        appView.desugaredLibraryTypeRewriter.rewrittenContextType(synthesizingContextType);
     if (rewrittenContext == null) {
       return;
     }
@@ -163,7 +164,7 @@
         appView
             .dexItemFactory()
             .createType(getDescriptorFromClassBinaryName(rewrittenPrefix + suffix));
-    appView.typeRewriter.rewriteType(hygienicType, rewrittenType);
+    appView.desugaredLibraryTypeRewriter.rewriteType(hygienicType, rewrittenType);
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
index b331bcb..b49fb8e 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
@@ -771,13 +771,14 @@
       AppView<?> appView,
       DexType type) {
     DexType rewrittenContextType =
-        appView.typeRewriter.rewrittenContextType(outerContext.getSynthesizingContextType());
+        appView.desugaredLibraryTypeRewriter.rewrittenContextType(
+            outerContext.getSynthesizingContextType());
     if (rewrittenContextType == null) {
       return;
     }
     SynthesizingContext synthesizingContext = SynthesizingContext.fromType(rewrittenContextType);
     DexType rewrittenType = contextToType.apply(synthesizingContext);
-    appView.typeRewriter.rewriteType(type, rewrittenType);
+    appView.desugaredLibraryTypeRewriter.rewriteType(type, rewrittenType);
   }
 
   public DexProgramClass createClass(