Revert "Desugared library: j$ extensions"

This reverts commit a9fa6f11863b37538de5b87203cd40fd46bcc464.

Reason for revert: This is making all our bots red, failing in 
com.android.tools.r8.memberrebinding.b135627418.B135627418 > dontRebindWithinLibrary[dex-default] 

Change-Id: I1ffa33107f3f1eed423b83e81849038f29cf126b
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index 5098368..bd49aa1 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -155,7 +155,7 @@
 
       DexApplication app = new ApplicationReader(inputApp, options, timing).read(executor);
       PrefixRewritingMapper rewritePrefix =
-          options.desugaredLibraryConfiguration.createPrefixRewritingMapper(options);
+          options.desugaredLibraryConfiguration.createPrefixRewritingMapper(options.itemFactory);
       AppInfo appInfo =
           options.enableDesugaring ? new AppInfoWithClassHierarchy(app) : new AppInfo(app);
 
@@ -174,8 +174,8 @@
         }
       }
 
-      AppView<?> appView = AppView.createForD8(appInfo, options, rewritePrefix);
-      IRConverter converter = new IRConverter(appView, timing, printer);
+      IRConverter converter =
+          new IRConverter(AppView.createForD8(appInfo, options, rewritePrefix), timing, printer);
       app = converter.convert(app, executor);
 
       if (options.printCfg) {
@@ -220,7 +220,7 @@
               options,
               marker == null ? null : ImmutableList.copyOf(markers),
               GraphLense.getIdentityLense(),
-              PrefixRewritingNamingLens.createPrefixRewritingNamingLens(appView),
+              PrefixRewritingNamingLens.createPrefixRewritingNamingLens(options, rewritePrefix),
               null)
           .write(executor);
       options.printWarnings();
diff --git a/src/main/java/com/android/tools/r8/L8.java b/src/main/java/com/android/tools/r8/L8.java
index 87c15ab..45cb778 100644
--- a/src/main/java/com/android/tools/r8/L8.java
+++ b/src/main/java/com/android/tools/r8/L8.java
@@ -114,7 +114,7 @@
 
       DexApplication app = new ApplicationReader(inputApp, options, timing).read(executor);
       PrefixRewritingMapper rewritePrefix =
-          options.desugaredLibraryConfiguration.createPrefixRewritingMapper(options);
+          options.desugaredLibraryConfiguration.createPrefixRewritingMapper(options.itemFactory);
 
       app = new L8TreePruner(options).prune(app, rewritePrefix);
       AppInfo appInfo = new AppInfoWithClassHierarchy(app);
@@ -134,7 +134,7 @@
               options,
               options.getMarker(Tool.L8),
               GraphLense.getIdentityLense(),
-              PrefixRewritingNamingLens.createPrefixRewritingNamingLens(appView),
+              PrefixRewritingNamingLens.createPrefixRewritingNamingLens(options, rewritePrefix),
               null)
           .write(options.getClassFileConsumer(), executor);
       options.printWarnings();
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 1c7774d..dbe1572 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -783,7 +783,8 @@
           application,
           appView,
           appView.graphLense(),
-          PrefixRewritingNamingLens.createPrefixRewritingNamingLens(appView, namingLens),
+          PrefixRewritingNamingLens.createPrefixRewritingNamingLens(
+              options, appView.rewritePrefix, namingLens),
           options,
           proguardMapSupplier);
 
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 1581a5e..650bf61 100644
--- a/src/main/java/com/android/tools/r8/graph/AppView.java
+++ b/src/main/java/com/android/tools/r8/graph/AppView.java
@@ -70,7 +70,8 @@
         options,
         appInfo == null
             ? PrefixRewritingMapper.empty()
-            : options.desugaredLibraryConfiguration.createPrefixRewritingMapper(options));
+            : options.desugaredLibraryConfiguration.createPrefixRewritingMapper(
+                options.itemFactory));
   }
 
   private AppView(
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 acdad7d..8c632a2 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
@@ -507,13 +507,13 @@
       // They however require the Optional/Stream class to be present, either through
       // desugared libraries or natively. If Optional/Stream class is not present,
       // we do not desugar to avoid confusion in error messages.
-      if (appView.rewritePrefix.hasRewrittenType(factory.optionalType, appView)
+      if (appView.rewritePrefix.hasRewrittenType(factory.optionalType)
           || options.minApiLevel >= AndroidApiLevel.N.getLevel()) {
         initializeJava9OptionalMethodProviders(factory);
         initializeJava10OptionalMethodProviders(factory);
         initializeJava11OptionalMethodProviders(factory);
       }
-      if (appView.rewritePrefix.hasRewrittenType(factory.streamType, appView)
+      if (appView.rewritePrefix.hasRewrittenType(factory.streamType)
           || options.minApiLevel >= AndroidApiLevel.N.getLevel()) {
         initializeStreamMethodProviders(factory);
       }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryAPIConverter.java b/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryAPIConverter.java
index dc0e8d6..4483eca 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryAPIConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryAPIConverter.java
@@ -101,7 +101,7 @@
         InvokeMethod invokeMethod = instruction.asInvokeMethod();
         DexMethod invokedMethod = invokeMethod.getInvokedMethod();
         // Rewriting is required only on calls to library methods which are not desugared.
-        if (appView.rewritePrefix.hasRewrittenType(invokedMethod.holder, appView)
+        if (appView.rewritePrefix.hasRewrittenType(invokedMethod.holder)
             || invokedMethod.holder.isArrayType()) {
           continue;
         }
@@ -111,7 +111,7 @@
         }
         // Library methods do not understand desugared types, hence desugared types have to be
         // converted around non desugared library calls for the invoke to resolve.
-        if (appView.rewritePrefix.hasRewrittenTypeInSignature(invokedMethod.proto, appView)) {
+        if (appView.rewritePrefix.hasRewrittenTypeInSignature(invokedMethod.proto)) {
           rewriteLibraryInvoke(code, invokeMethod, iterator, blockIterator);
         }
       }
@@ -131,7 +131,7 @@
     }
     DexMethod method = code.method.method;
     if (method.holder.isArrayType()
-        || !appView.rewritePrefix.hasRewrittenTypeInSignature(method.proto, appView)
+        || !appView.rewritePrefix.hasRewrittenTypeInSignature(method.proto)
         || appView
             .options()
             .desugaredLibraryConfiguration
@@ -173,7 +173,7 @@
       DexEncodedMethod dexEncodedMethod = dexClass.lookupVirtualMethod(method);
       if (dexEncodedMethod != null) {
         // In this case, the object will be wrapped.
-        if (appView.rewritePrefix.hasRewrittenType(dexClass.type, appView)) {
+        if (appView.rewritePrefix.hasRewrittenType(dexClass.type)) {
           return false;
         }
         foundOverrideToRewrite = true;
@@ -211,14 +211,14 @@
     DexType[] newParameters = originalMethod.proto.parameters.values.clone();
     int index = 0;
     for (DexType param : originalMethod.proto.parameters.values) {
-      if (appView.rewritePrefix.hasRewrittenType(param, appView)) {
+      if (appView.rewritePrefix.hasRewrittenType(param)) {
         newParameters[index] = vivifiedTypeFor(param, appView);
       }
       index++;
     }
     DexType returnType = originalMethod.proto.returnType;
     DexType newReturnType =
-        appView.rewritePrefix.hasRewrittenType(returnType, appView)
+        appView.rewritePrefix.hasRewrittenType(returnType)
             ? vivifiedTypeFor(returnType, appView)
             : returnType;
     DexProto newProto = appView.dexItemFactory().createProto(newReturnType, newParameters);
@@ -270,7 +270,7 @@
   }
 
   private void warnInvalidInvoke(DexType type, DexMethod invokedMethod, String debugString) {
-    DexType desugaredType = appView.rewritePrefix.rewrittenType(type, appView);
+    DexType desugaredType = appView.rewritePrefix.rewrittenType(type);
     appView
         .options()
         .reporter
@@ -310,7 +310,7 @@
     Instruction returnConversion = null;
     DexType newReturnType;
     DexType returnType = invokedMethod.proto.returnType;
-    if (appView.rewritePrefix.hasRewrittenType(returnType, appView)) {
+    if (appView.rewritePrefix.hasRewrittenType(returnType)) {
       if (canConvert(returnType)) {
         newReturnType = vivifiedTypeFor(returnType, appView);
         // Return conversion added only if return value is used.
@@ -332,7 +332,7 @@
     List<Instruction> parameterConversions = new ArrayList<>();
     List<Value> newInValues = new ArrayList<>();
     if (invokeMethod.isInvokeMethodWithReceiver()) {
-      assert !appView.rewritePrefix.hasRewrittenType(invokedMethod.holder, appView);
+      assert !appView.rewritePrefix.hasRewrittenType(invokedMethod.holder);
       newInValues.add(invokeMethod.asInvokeMethodWithReceiver().getReceiver());
     }
     int receiverShift = BooleanUtils.intValue(invokeMethod.isInvokeMethodWithReceiver());
@@ -340,7 +340,7 @@
     DexType[] newParameters = parameters.clone();
     for (int i = 0; i < parameters.length; i++) {
       DexType argType = parameters[i];
-      if (appView.rewritePrefix.hasRewrittenType(argType, appView)) {
+      if (appView.rewritePrefix.hasRewrittenType(argType)) {
         if (canConvert(argType)) {
           DexType argVivifiedType = vivifiedTypeFor(argType, appView);
           Value inValue = invokeMethod.inValues().get(i + receiverShift);
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryConfiguration.java b/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryConfiguration.java
index 510d750..3d0a59c 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryConfiguration.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/DesugaredLibraryConfiguration.java
@@ -13,7 +13,6 @@
 import com.android.tools.r8.ir.desugar.PrefixRewritingMapper.DesugarPrefixRewritingMapper;
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.DescriptorUtils;
-import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.Pair;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
@@ -96,10 +95,10 @@
     this.extraKeepRules = extraKeepRules;
   }
 
-  public PrefixRewritingMapper createPrefixRewritingMapper(InternalOptions options) {
+  public PrefixRewritingMapper createPrefixRewritingMapper(DexItemFactory factory) {
     return rewritePrefix.isEmpty()
         ? PrefixRewritingMapper.empty()
-        : new DesugarPrefixRewritingMapper(rewritePrefix, options);
+        : new DesugarPrefixRewritingMapper(rewritePrefix, factory);
   }
 
   public AndroidApiLevel getRequiredCompilationApiLevel() {
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
index bcae8e7..328d8e2 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
@@ -393,7 +393,7 @@
     }
     // Since desugared library classes are desugared, no need to rewrite invokes which can target
     // only such classes program types.
-    if (appView.rewritePrefix.hasRewrittenType(dexClass.type, appView)) {
+    if (appView.rewritePrefix.hasRewrittenType(dexClass.type)) {
       return null;
     }
     DexEncodedMethod singleTarget =
@@ -438,7 +438,7 @@
     if (emulatedInterfaces.containsKey(clazz.type)) {
       return true;
     }
-    return appView.rewritePrefix.hasRewrittenType(clazz.type, appView);
+    return appView.rewritePrefix.hasRewrittenType(clazz.type);
   }
 
   boolean dontRewrite(DexMethod method) {
@@ -792,7 +792,7 @@
     for (DexClass clazz : appView.appInfo().classes()) {
       if (clazz.isInterface()) {
         DexType newType = inferEmulatedInterfaceName(clazz);
-        if (newType != null && !appView.rewritePrefix.hasRewrittenType(clazz.type, appView)) {
+        if (newType != null && !appView.rewritePrefix.hasRewrittenType(clazz.type)) {
           // We do not rewrite if it is already going to be rewritten using the a rewritingPrefix.
           addRewritePrefix(clazz.type, newType.toString());
           renameEmulatedInterfaces(clazz, newType);
@@ -1050,7 +1050,7 @@
   private void warnMissingType(DexMethod referencedFrom, DexType missing) {
     // Companion/Emulated interface/Conversion classes for desugared library won't be missing,
     // they are in the desugared library.
-    if (appView.rewritePrefix.hasRewrittenType(missing, appView)
+    if (appView.rewritePrefix.hasRewrittenType(missing)
         || DesugaredLibraryWrapperSynthesizer.isSynthesizedWrapper(missing)
         || isCompanionClassType(missing)
         || appView
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java
index 2fd29e1..6ae855c 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java
@@ -361,8 +361,7 @@
               lambdaClassType,
               new LambdaClass(this, accessedFrom, lambdaClassType, descriptor));
       if (getAppView().options().isDesugaredLibraryCompilation()) {
-        DexType rewrittenType =
-            getAppView().rewritePrefix.rewrittenType(accessedFrom, getAppView());
+        DexType rewrittenType = getAppView().rewritePrefix.rewrittenType(accessedFrom);
         if (rewrittenType == null) {
           rewrittenType =
               getAppView()
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/PrefixRewritingMapper.java b/src/main/java/com/android/tools/r8/ir/desugar/PrefixRewritingMapper.java
index 1c3b6a2..1549b58 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/PrefixRewritingMapper.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/PrefixRewritingMapper.java
@@ -5,14 +5,11 @@
 package com.android.tools.r8.ir.desugar;
 
 import com.android.tools.r8.errors.CompilationError;
-import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexClass;
 import com.android.tools.r8.graph.DexItemFactory;
 import com.android.tools.r8.graph.DexProto;
 import com.android.tools.r8.graph.DexString;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.utils.DescriptorUtils;
-import com.android.tools.r8.utils.InternalOptions;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Sets;
 import java.util.Map;
@@ -25,20 +22,20 @@
     return new EmptyPrefixRewritingMapper();
   }
 
+  public abstract DexType rewrittenType(DexType type);
+
   public abstract void rewriteType(DexType type, DexType rewrittenType);
 
-  public abstract DexType rewrittenType(DexType type, AppView<?> appView);
-
-  public boolean hasRewrittenType(DexType type, AppView<?> appView) {
-    return rewrittenType(type, appView) != null;
+  public boolean hasRewrittenType(DexType type) {
+    return rewrittenType(type) != null;
   }
 
-  public boolean hasRewrittenTypeInSignature(DexProto proto, AppView<?> appView) {
-    if (hasRewrittenType(proto.returnType, appView)) {
+  public boolean hasRewrittenTypeInSignature(DexProto proto) {
+    if (hasRewrittenType(proto.returnType)) {
       return true;
     }
     for (DexType paramType : proto.parameters.values) {
-      if (hasRewrittenType(paramType, appView)) {
+      if (hasRewrittenType(paramType)) {
         return true;
       }
     }
@@ -53,11 +50,9 @@
     private final Map<DexType, DexType> rewritten = new ConcurrentHashMap<>();
     private final Map<DexString, DexString> initialPrefixes;
     private final DexItemFactory factory;
-    private final boolean l8Compilation;
 
-    public DesugarPrefixRewritingMapper(Map<String, String> prefixes, InternalOptions options) {
-      this.factory = options.itemFactory;
-      this.l8Compilation = options.isDesugaredLibraryCompilation();
+    public DesugarPrefixRewritingMapper(Map<String, String> prefixes, DexItemFactory factory) {
+      this.factory = factory;
       ImmutableMap.Builder<DexString, DexString> builder = ImmutableMap.builder();
       for (String key : prefixes.keySet()) {
         builder.put(toDescriptorPrefix(key), toDescriptorPrefix(prefixes.get(key)));
@@ -102,34 +97,14 @@
     }
 
     @Override
-    public DexType rewrittenType(DexType type, AppView<?> appView) {
-      assert appView != null || l8Compilation;
+    public DexType rewrittenType(DexType type) {
       if (notRewritten.contains(type)) {
         return null;
       }
       if (rewritten.containsKey(type)) {
         return rewritten.get(type);
       }
-      return computePrefix(type, appView);
-    }
-
-    // Besides L8 compilation, program types should not be rewritten.
-    private void failIfRewritingProgramType(DexType type, AppView<?> appView) {
-      if (l8Compilation) {
-        return;
-      }
-
-      DexType dexType = type.isArrayType() ? type.toBaseType(appView.dexItemFactory()) : type;
-      DexClass dexClass = appView.definitionFor(dexType);
-      if (dexClass != null && dexClass.isProgramClass()) {
-        appView
-            .options()
-            .reporter
-            .error(
-                "Cannot compile program class "
-                    + dexType
-                    + " since it conflicts with a desugared library rewriting rule.");
-      }
+      return computePrefix(type);
     }
 
     @Override
@@ -147,11 +122,10 @@
       rewritten.put(type, rewrittenType);
     }
 
-    private DexType computePrefix(DexType type, AppView<?> appView) {
+    private DexType computePrefix(DexType type) {
       DexString prefixToMatch = type.descriptor.withoutArray(factory);
       DexType result = lookup(type, prefixToMatch, initialPrefixes);
       if (result != null) {
-        failIfRewritingProgramType(type, appView);
         return result;
       }
       notRewritten.add(type);
@@ -181,7 +155,7 @@
   public static class EmptyPrefixRewritingMapper extends PrefixRewritingMapper {
 
     @Override
-    public DexType rewrittenType(DexType type, AppView<?> appView) {
+    public DexType rewrittenType(DexType type) {
       return null;
     }
 
diff --git a/src/main/java/com/android/tools/r8/ir/synthetic/DesugaredLibraryAPIConversionCfCodeProvider.java b/src/main/java/com/android/tools/r8/ir/synthetic/DesugaredLibraryAPIConversionCfCodeProvider.java
index 422bc2f..5597bb5 100644
--- a/src/main/java/com/android/tools/r8/ir/synthetic/DesugaredLibraryAPIConversionCfCodeProvider.java
+++ b/src/main/java/com/android/tools/r8/ir/synthetic/DesugaredLibraryAPIConversionCfCodeProvider.java
@@ -43,7 +43,7 @@
 
   boolean shouldConvert(
       DexType type, DesugaredLibraryAPIConverter converter, DexString methodName) {
-    if (!appView.rewritePrefix.hasRewrittenType(type, appView)) {
+    if (!appView.rewritePrefix.hasRewrittenType(type)) {
       return false;
     }
     if (converter.canConvert(type)) {
@@ -118,7 +118,7 @@
 
       DexType returnType = forwardMethod.proto.returnType;
       DexType forwardMethodReturnType =
-          appView.rewritePrefix.hasRewrittenType(returnType, appView)
+          appView.rewritePrefix.hasRewrittenType(returnType)
               ? vivifiedTypeFor(returnType)
               : returnType;
 
diff --git a/src/main/java/com/android/tools/r8/naming/MethodNameMinifier.java b/src/main/java/com/android/tools/r8/naming/MethodNameMinifier.java
index 8d2e79f..f12d958 100644
--- a/src/main/java/com/android/tools/r8/naming/MethodNameMinifier.java
+++ b/src/main/java/com/android/tools/r8/naming/MethodNameMinifier.java
@@ -280,7 +280,7 @@
           state.reserveName(reservedName, method.method);
           // This is reserving names which after prefix rewriting will actually override a library
           // method.
-          if (appView.rewritePrefix.hasRewrittenTypeInSignature(method.method.proto, appView)) {
+          if (appView.rewritePrefix.hasRewrittenTypeInSignature(method.method.proto)) {
             state.reserveName(
                 reservedName,
                 DesugaredLibraryAPIConverter.methodWithVivifiedTypeInSignature(
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 777d006..e1dc8a6 100644
--- a/src/main/java/com/android/tools/r8/naming/PrefixRewritingNamingLens.java
+++ b/src/main/java/com/android/tools/r8/naming/PrefixRewritingNamingLens.java
@@ -5,7 +5,6 @@
 package com.android.tools.r8.naming;
 
 import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexCallSite;
 import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexItem;
@@ -32,27 +31,28 @@
   final NamingLens namingLens;
   final InternalOptions options;
 
-  public static NamingLens createPrefixRewritingNamingLens(AppView<?> appView) {
-    return createPrefixRewritingNamingLens(appView, NamingLens.getIdentityLens());
+  public static NamingLens createPrefixRewritingNamingLens(
+      InternalOptions options, PrefixRewritingMapper rewritePrefix) {
+    return createPrefixRewritingNamingLens(options, rewritePrefix, NamingLens.getIdentityLens());
   }
 
   public static NamingLens createPrefixRewritingNamingLens(
-      AppView<?> appView, NamingLens namingLens) {
-    if (!appView.rewritePrefix.isRewriting()) {
+      InternalOptions options, PrefixRewritingMapper rewritePrefix, NamingLens namingLens) {
+    if (!rewritePrefix.isRewriting()) {
       return namingLens;
     }
-    return new PrefixRewritingNamingLens(namingLens, appView);
+    return new PrefixRewritingNamingLens(namingLens, options, rewritePrefix);
   }
 
-  public PrefixRewritingNamingLens(NamingLens namingLens, AppView<?> appView) {
+  public PrefixRewritingNamingLens(
+      NamingLens namingLens, InternalOptions options, PrefixRewritingMapper rewritePrefix) {
     this.namingLens = namingLens;
-    this.options = appView.options();
+    this.options = options;
     DexItemFactory itemFactory = options.itemFactory;
-    PrefixRewritingMapper rewritePrefix = appView.rewritePrefix;
     itemFactory.forAllTypes(
         type -> {
-          if (rewritePrefix.hasRewrittenType(type, appView)) {
-            classRenaming.put(type, rewritePrefix.rewrittenType(type, appView).descriptor);
+          if (rewritePrefix.hasRewrittenType(type)) {
+            classRenaming.put(type, rewritePrefix.rewrittenType(type).descriptor);
           }
         });
     // Verify that no type would have been renamed by both lenses.
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 2884fcd..1b76214 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -1645,7 +1645,7 @@
       // In the first enqueuer phase, the signature has not been desugared, so firstResolution
       // maintains the library override. In the second enqueuer phase, the signature has been
       // desugared, and the second resolution maintains the the library override.
-      if (appView.rewritePrefix.hasRewrittenTypeInSignature(method.method.proto, appView)) {
+      if (appView.rewritePrefix.hasRewrittenTypeInSignature(method.method.proto)) {
         DexMethod methodToResolve =
             DesugaredLibraryAPIConverter.methodWithVivifiedTypeInSignature(
                 method.method, method.method.holder, appView);
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 8e5e7a3..20595c7 100644
--- a/src/main/java/com/android/tools/r8/shaking/L8TreePruner.java
+++ b/src/main/java/com/android/tools/r8/shaking/L8TreePruner.java
@@ -43,7 +43,7 @@
     }
     List<DexProgramClass> toKeep = new ArrayList<>();
     for (DexProgramClass aClass : app.classes()) {
-      if (rewritePrefix.hasRewrittenType(aClass.type, null)
+      if (rewritePrefix.hasRewrittenType(aClass.type)
           || emulatedInterfaces.contains(aClass.type)
           || interfaceImplementsEmulatedInterface(aClass, typeMap)) {
         toKeep.add(aClass);
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/J$ExtensionTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/J$ExtensionTest.java
deleted file mode 100644
index 3c78730..0000000
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/J$ExtensionTest.java
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright (c) 2020, 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.desugar.desugaredlibrary;
-
-import static junit.framework.TestCase.assertTrue;
-import static junit.framework.TestCase.fail;
-
-import com.android.tools.r8.CompilationFailedException;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.TestRuntime;
-import com.android.tools.r8.TestRuntime.CfVm;
-import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.ToolHelper.DexVm.Version;
-import com.android.tools.r8.utils.AndroidApiLevel;
-import com.android.tools.r8.utils.BooleanUtils;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.List;
-import org.junit.Assume;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class J$ExtensionTest extends DesugaredLibraryTestBase {
-
-  private final TestParameters parameters;
-  private final boolean shrinkDesugaredLibrary;
-
-  private static final String MAIN_CLASS_NAME = "Main";
-  private static final String MAIN_CLASS =
-      "import java.time.LocalTimeAccess;\n"
-          + "public class Main {\n"
-          + "   public static void main(String[] args) throws Exception { \n"
-          + "     LocalTimeAccess.main(new String[0]);\n"
-          + "   }\n"
-          + "}";
-
-  private static final String TIME_CLASS =
-      "package java.time;\n"
-          + "\n"
-          + "import java.time.LocalTime;\n"
-          + "\n"
-          + "public class LocalTimeAccess {\n"
-          + "\n"
-          + "  public static void main(String[] args) throws Exception {\n"
-          + "    System.out.println(LocalTime.readExternal(null));\n"
-          + "  }\n"
-          + "}";
-  private static Path[] compiledClasses = new Path[2];
-
-  @Parameters(name = "{1}, shrinkDesugaredLibrary: {0}")
-  public static List<Object[]> data() {
-    return buildParameters(
-        BooleanUtils.values(), getTestParameters().withAllRuntimes().withAllApiLevels().build());
-  }
-
-  public J$ExtensionTest(boolean shrinkDesugaredLibrary, TestParameters parameters) {
-    this.shrinkDesugaredLibrary = shrinkDesugaredLibrary;
-    this.parameters = parameters;
-  }
-
-  @BeforeClass
-  public static void compileClass() throws IOException {
-    Assume.assumeFalse(ToolHelper.isWindows());
-
-    File file1 = getStaticTemp().newFile("LocalTimeAccess.java");
-    BufferedWriter writer1 = new BufferedWriter(new FileWriter(file1));
-    writer1.write(TIME_CLASS);
-    writer1.close();
-    compiledClasses[0] =
-        javac(TestRuntime.getCheckedInJdk8(), getStaticTemp())
-            .addSourceFiles(file1.toPath())
-            .compile();
-
-    File file2 = getStaticTemp().newFile("Main.java");
-    BufferedWriter writer2 = new BufferedWriter(new FileWriter(file2));
-    writer2.write(MAIN_CLASS);
-    writer2.close();
-    compiledClasses[1] =
-        javac(TestRuntime.getCheckedInJdk8(), getStaticTemp())
-            .addSourceFiles(file2.toPath())
-            .addClasspathFiles(compiledClasses[0])
-            .compile();
-  }
-
-  @Test
-  public void testJ$ExtensionNoDesugaring() throws Exception {
-    Assume.assumeFalse(shrinkDesugaredLibrary);
-    String stderr;
-    if (parameters.isCfRuntime()) {
-      stderr =
-          testForJvm()
-              .addProgramFiles(compiledClasses)
-              .run(parameters.getRuntime(), MAIN_CLASS_NAME)
-              .assertFailure()
-              .getStdErr();
-    } else {
-      stderr =
-          testForD8()
-              .addProgramFiles(compiledClasses)
-              .setMinApi(parameters.getApiLevel())
-              .run(parameters.getRuntime(), MAIN_CLASS_NAME)
-              .assertFailure()
-              .getStdErr();
-    }
-    assertError(stderr);
-  }
-
-  private void assertError(String stderr) {
-    if (parameters.isCfRuntime() && parameters.getRuntime().asCf().getVm() == CfVm.JDK8) {
-      assertTrue(
-          stderr.contains("java.lang.SecurityException: Prohibited package name: java.time"));
-    } else if (parameters.isCfRuntime()) {
-      assertTrue(stderr.contains("java.lang.ClassNotFoundException: java.time.LocalTimeAccess"));
-    } else if (parameters
-        .getRuntime()
-        .asDex()
-        .getVm()
-        .getVersion()
-        .isOlderThanOrEqual(Version.V6_0_1)) {
-      assertTrue(stderr.contains("java.lang.NoClassDefFoundError"));
-    } else if (parameters.getRuntime().asDex().getVm().getVersion() == Version.V7_0_0) {
-      assertTrue(stderr.contains("java.lang.ClassNotFoundException"));
-    } else {
-      assertTrue(stderr.contains("java.lang.IllegalAccessError"));
-    }
-  }
-
-  @Test
-  public void testJ$ExtensionDesugaring() throws Exception {
-    Assume.assumeFalse(parameters.isCfRuntime());
-    // Above O no desugaring is required.
-    Assume.assumeTrue(parameters.getApiLevel().getLevel() < AndroidApiLevel.O.getLevel());
-    KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
-
-    try {
-      testForD8()
-          .addProgramFiles(compiledClasses)
-          .setMinApi(parameters.getApiLevel())
-          .enableCoreLibraryDesugaring(parameters.getApiLevel(), keepRuleConsumer)
-          .compile();
-      fail();
-    } catch (CompilationFailedException e) {
-      assertTrue(
-          e.getCause()
-              .getMessage()
-              .contains("Cannot compile program class java.time.LocalTimeAccess"));
-    }
-  }
-}