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 1693ed7..8e07cc1 100644
--- a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
+++ b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
@@ -182,21 +182,25 @@
           markClass(clazz, rule, ifRule);
         } else {
           preconditionSupplier = ImmutableMap.of((definition -> true), clazz);
-          markMatchingVisibleMethods(clazz, memberKeepRules, rule, preconditionSupplier, true, ifRule);
+          markMatchingVisibleMethods(
+              clazz, memberKeepRules, rule, preconditionSupplier, true, ifRule);
           markMatchingOverriddenMethods(
               appView.appInfo(), clazz, memberKeepRules, rule, preconditionSupplier, true, ifRule);
-          markMatchingVisibleFields(clazz, memberKeepRules, rule, preconditionSupplier, true, ifRule);
+          markMatchingVisibleFields(
+              clazz, memberKeepRules, rule, preconditionSupplier, true, ifRule);
         }
       } else if (rule instanceof ProguardWhyAreYouKeepingRule) {
         markClass(clazz, rule, ifRule);
         markMatchingVisibleMethods(clazz, memberKeepRules, rule, null, true, ifRule);
-        markMatchingOverriddenMethods(appView.appInfo(), clazz, memberKeepRules, rule, null, true, ifRule);
+        markMatchingOverriddenMethods(
+            appView.appInfo(), clazz, memberKeepRules, rule, null, true, ifRule);
         markMatchingVisibleFields(clazz, memberKeepRules, rule, null, true, ifRule);
       } else if (rule instanceof ProguardAssumeMayHaveSideEffectsRule
           || rule instanceof ProguardAssumeNoSideEffectRule
           || rule instanceof ProguardAssumeValuesRule) {
         markMatchingVisibleMethods(clazz, memberKeepRules, rule, null, true, ifRule);
-        markMatchingOverriddenMethods(appView.appInfo(), clazz, memberKeepRules, rule, null, true, ifRule);
+        markMatchingOverriddenMethods(
+            appView.appInfo(), clazz, memberKeepRules, rule, null, true, ifRule);
         markMatchingVisibleFields(clazz, memberKeepRules, rule, null, true, ifRule);
       } else if (rule instanceof ClassMergingRule) {
         if (allRulesSatisfied(memberKeepRules, clazz)) {
@@ -588,8 +592,7 @@
       boolean includeLibraryClasses,
       ProguardIfRule ifRule) {
     Set<Wrapper<DexMethod>> methodsMarked =
-        options.forceProguardCompatibility || rule instanceof ProguardAssumeNoSideEffectRule
-            ? null : new HashSet<>();
+        options.forceProguardCompatibility ? null : new HashSet<>();
     DexClass startingClass = clazz;
     while (clazz != null) {
       if (!includeLibraryClasses && clazz.isNotProgramClass()) {
diff --git a/src/test/java/com/android/tools/r8/shaking/assumenosideeffects/AssumenosideeffectsVisibleMethodsTest.java b/src/test/java/com/android/tools/r8/shaking/assumenosideeffects/AssumenosideeffectsVisibleMethodsTest.java
index a9dda0d..24edc40 100644
--- a/src/test/java/com/android/tools/r8/shaking/assumenosideeffects/AssumenosideeffectsVisibleMethodsTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/assumenosideeffects/AssumenosideeffectsVisibleMethodsTest.java
@@ -80,10 +80,8 @@
               "The end");
         case RULE_THAT_REFERS_PRG_BASE:
           return StringUtils.lines(
-              // TODO(b/137938214): Should not mark LibraryBase's methods.
-              // "Throwing!",
-              "Unless LibraryBase is explicitly mentioned",
-              // "[LibraryBase]: as long as LibraryBase is specified"
+              "Expect to catch RuntimeException",
+              "[LibraryBase]: as long as LibraryBase is specified",
               // TODO(b/137938214): Should we mark ProgramSub's methods?
               //   Those are clearly an instance of ProgramSub type, and invocations with it.
               //   One caveat: ProgramSub#throwing doesn't exist, so ProgramBase#throwing will be
@@ -92,26 +90,22 @@
               "The end");
         case RULE_THAT_REFERS_PRG_SUB:
           return StringUtils.lines(
-              // TODO(b/137938214): Should not mark LibraryBase's methods.
-              // "Throwing!",
-              "Unless LibraryBase is explicitly mentioned",
-              // TODO(b/137938214): Should not mark *Base's #debug(...)
-              // "[LibraryBase]: as long as LibraryBase is specified"
+              "Expect to catch RuntimeException",
+              "[LibraryBase]: as long as LibraryBase is specified",
+              // TODO(b/137938214): Should we do synthetic propagation up to ProgramBase#debug() ?
               // "[ProgramBase]: as long as ProgramBase is specified"
               "The end");
         case RULE_WITH_EXTENDS_LIB_BASE:
           return StringUtils.lines(
-              // TODO(b/137938214): Should not mark LibraryBase's methods.
-              // "Throwing!",
-              "Unless LibraryBase is explicitly mentioned",
-              // "[LibraryBase]: as long as LibraryBase is specified"
+              "Expect to catch RuntimeException",
+              "[LibraryBase]: as long as LibraryBase is specified",
               "The end");
         case RULE_WITH_EXTENDS_PRG_BASE:
           return StringUtils.lines(
-              // TODO(b/137938214): Should not mark LibraryBase's methods.
-              // "Throwing!",
-              "Unless LibraryBase is explicitly mentioned",
-              // "[LibraryBase]: as long as LibraryBase is specified"
+              "Expect to catch RuntimeException",
+              "[LibraryBase]: as long as LibraryBase is specified",
+              // TODO(b/137938214): Should we do synthetic propagation up to ProgramBase#debug() ?
+              // "[ProgramBase]: as long as ProgramBase is specified"
               "The end");
       }
       throw new Unreachable();
