diff --git a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
index b7e70add..3ae95b1 100644
--- a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
+++ b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
@@ -306,12 +306,13 @@
       return;
     }
     for (DexEncodedMethod encodedMethod : clazz.virtualMethods()) {
-      propagateAssumeRules(encodedMethod.method, subTypes, noSideEffects);
-      propagateAssumeRules(encodedMethod.method, subTypes, assumedValues);
+      propagateAssumeRules(clazz.type, encodedMethod.method, subTypes, noSideEffects);
+      propagateAssumeRules(clazz.type, encodedMethod.method, subTypes, assumedValues);
     }
   }
 
   private void propagateAssumeRules(
+      DexType type,
       DexMethod reference,
       Set<DexType> subTypes,
       Map<DexReference, ProguardMemberRule> assumeRulePool) {
@@ -325,7 +326,8 @@
       // we apply those assume rules, here we use a resolved target.
       DexEncodedMethod target =
           appView.appInfo().resolveMethod(subType, referenceInSubType).asResultOfResolve();
-      if (target == null) {
+      // But, the resolution should not be landed on the current type we are visiting.
+      if (target == null || target.method.holder == type) {
         continue;
       }
       ProguardMemberRule ruleInSubType = assumeRulePool.get(target.method);
diff --git a/src/test/java/com/android/tools/r8/shaking/assumenosideeffects/AssumenosideeffectsWithMultipleTargetsTest.java b/src/test/java/com/android/tools/r8/shaking/assumenosideeffects/AssumenosideeffectsWithMultipleTargetsTest.java
index 58024e2..6806661 100644
--- a/src/test/java/com/android/tools/r8/shaking/assumenosideeffects/AssumenosideeffectsWithMultipleTargetsTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/assumenosideeffects/AssumenosideeffectsWithMultipleTargetsTest.java
@@ -10,6 +10,7 @@
 
 import com.android.tools.r8.NeverClassInline;
 import com.android.tools.r8.NeverInline;
+import com.android.tools.r8.NeverMerge;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.errors.Unreachable;
@@ -92,6 +93,7 @@
   public void testR8() throws Exception {
     testForR8(parameters.getBackend())
         .addInnerClasses(AssumenosideeffectsWithMultipleTargetsTest.class)
+        .enableMergeAnnotations()
         .enableClassInliningAnnotations()
         .enableInliningAnnotations()
         .addKeepMainRule(MAIN)
@@ -107,6 +109,10 @@
     void info(String tag, String message);
   }
 
+  @NeverMerge
+  static abstract class AbstractLogger implements TestLogger {
+  }
+
   @NeverClassInline
   static class TestLoggerImplementer implements TestLogger {
 
@@ -118,7 +124,7 @@
   }
 
   @NeverClassInline
-  static class AnotherImplementer implements TestLogger {
+  static class AnotherImplementer extends AbstractLogger implements TestLogger {
 
     @NeverInline
     @Override
