diff --git a/src/main/java/com/android/tools/r8/ir/desugar/ClassProcessor.java b/src/main/java/com/android/tools/r8/ir/desugar/ClassProcessor.java
index 3971c88..7dc7daa 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/ClassProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/ClassProcessor.java
@@ -320,8 +320,10 @@
       return;
     }
 
-    // If target is a non-interface library class it may be an emulated interface.
-    if (!libraryHolder.isInterface()) {
+    // If target is a non-interface library class it may be an emulated interface,
+    // except on a rewritten type, where L8 has already dealt with the desugaring.
+    if (!libraryHolder.isInterface()
+        && !appView.rewritePrefix.hasRewrittenType(libraryHolder.type, appView)) {
       // Here we use step-3 of resolution to find a maximally specific default interface method.
       DexClassAndMethod result = appInfo.lookupMaximallySpecificMethod(libraryHolder, method);
       if (result != null && rewriter.isEmulatedInterface(result.getHolder().type)) {
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ConcurrentHashMapSubclassTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ConcurrentHashMapSubclassTest.java
index f13eddb..ae709f3 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ConcurrentHashMapSubclassTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ConcurrentHashMapSubclassTest.java
@@ -6,6 +6,7 @@
 
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.utils.BooleanUtils;
+import com.android.tools.r8.utils.StringUtils;
 import java.util.IdentityHashMap;
 import java.util.List;
 import java.util.Map;
@@ -18,6 +19,9 @@
 @RunWith(Parameterized.class)
 public class ConcurrentHashMapSubclassTest extends DesugaredLibraryTestBase {
 
+  private static final String EXPECTED_RESULT =
+      StringUtils.lines("1.0", "2.0", "10.0", "1.0", "2.0", "10.0", "1.0", "2.0", "10.0");
+
   private final TestParameters parameters;
   private final boolean shrinkDesugaredLibrary;
 
@@ -46,7 +50,7 @@
             keepRuleConsumer.get(),
             shrinkDesugaredLibrary)
         .run(parameters.getRuntime(), Executor.class)
-        .assertSuccessWithOutputLines("1.0", "10.0", "1.0", "10.0", "1.0", "10.0");
+        .assertSuccessWithOutput(EXPECTED_RESULT);
   }
 
   @Test
@@ -64,7 +68,7 @@
             keepRuleConsumer.get(),
             shrinkDesugaredLibrary)
         .run(parameters.getRuntime(), Executor.class)
-        .assertSuccessWithOutputLines("1.0", "10.0", "1.0", "10.0", "1.0", "10.0");
+        .assertSuccessWithOutput(EXPECTED_RESULT);
   }
 
   @SuppressWarnings("unchecked")
@@ -78,24 +82,33 @@
     static void itfType() {
       Map map = new NullableConcurrentHashMap<Integer, Double>();
       map.put(1, 1.0);
+      map.putIfAbsent(2, 2.0);
+      map.putIfAbsent(2, 3.0);
       map.putAll(example());
       System.out.println(map.get(1));
+      System.out.println(map.get(2));
       System.out.println(map.get(10));
     }
 
     static void classType() {
       ConcurrentHashMap map = new NullableConcurrentHashMap<Integer, Double>();
       map.put(1, 1.0);
+      map.putIfAbsent(2, 2.0);
+      map.putIfAbsent(2, 3.0);
       map.putAll(example());
       System.out.println(map.get(1));
+      System.out.println(map.get(2));
       System.out.println(map.get(10));
     }
 
     static void directType() {
       NullableConcurrentHashMap map = new NullableConcurrentHashMap<Integer, Double>();
       map.put(1, 1.0);
+      map.putIfAbsent(2, 2.0);
+      map.putIfAbsent(2, 3.0);
       map.putAll(example());
       System.out.println(map.get(1));
+      System.out.println(map.get(2));
       System.out.println(map.get(10));
     }
 
