diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index b40b925..ace131b 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -1317,7 +1317,7 @@
           stringOptimizer,
           method,
           code,
-          methodProcessor::isProcessedConcurrently,
+          methodProcessor,
           inliner,
           Suppliers.memoize(
               () ->
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/ClassInliner.java b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/ClassInliner.java
index 538cba6..c71006f 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/ClassInliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/ClassInliner.java
@@ -13,6 +13,7 @@
 import com.android.tools.r8.ir.code.Instruction;
 import com.android.tools.r8.ir.code.InstructionOrPhi;
 import com.android.tools.r8.ir.code.Value;
+import com.android.tools.r8.ir.conversion.MethodProcessor;
 import com.android.tools.r8.ir.optimize.CodeRewriter;
 import com.android.tools.r8.ir.optimize.Inliner;
 import com.android.tools.r8.ir.optimize.InliningOracle;
@@ -27,7 +28,6 @@
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.Predicate;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
@@ -161,7 +161,7 @@
       StringOptimizer stringOptimizer,
       DexEncodedMethod method,
       IRCode code,
-      Predicate<DexEncodedMethod> isProcessedConcurrently,
+      MethodProcessor methodProcessor,
       Inliner inliner,
       Supplier<InliningOracle> defaultOracle) {
 
@@ -188,7 +188,7 @@
                 appView,
                 inliner,
                 clazz -> isClassEligible(appView, clazz),
-                isProcessedConcurrently,
+                methodProcessor,
                 method,
                 root);
 
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
index fe1b092..016e600 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
@@ -35,6 +35,7 @@
 import com.android.tools.r8.ir.code.InvokeMethodWithReceiver;
 import com.android.tools.r8.ir.code.StaticGet;
 import com.android.tools.r8.ir.code.Value;
+import com.android.tools.r8.ir.conversion.MethodProcessor;
 import com.android.tools.r8.ir.optimize.Inliner;
 import com.android.tools.r8.ir.optimize.Inliner.InlineAction;
 import com.android.tools.r8.ir.optimize.Inliner.InliningInfo;
@@ -79,7 +80,7 @@
   private final AppView<AppInfoWithLiveness> appView;
   private final Inliner inliner;
   private final Function<DexClass, EligibilityStatus> isClassEligible;
-  private final Predicate<DexEncodedMethod> isProcessedConcurrently;
+  private final MethodProcessor methodProcessor;
   private final DexEncodedMethod method;
   private final Instruction root;
 
@@ -105,7 +106,7 @@
       AppView<AppInfoWithLiveness> appView,
       Inliner inliner,
       Function<DexClass, EligibilityStatus> isClassEligible,
-      Predicate<DexEncodedMethod> isProcessedConcurrently,
+      MethodProcessor methodProcessor,
       DexEncodedMethod method,
       Instruction root) {
     this.appView = appView;
@@ -113,7 +114,7 @@
     this.isClassEligible = isClassEligible;
     this.method = method;
     this.root = root;
-    this.isProcessedConcurrently = isProcessedConcurrently;
+    this.methodProcessor = methodProcessor;
     this.receivers = new ClassInlinerReceiverSet(root.outValue());
   }
 
@@ -1055,7 +1056,7 @@
   }
 
   private void markSizeForInlining(InvokeMethod invoke, DexEncodedMethod inlinee) {
-    assert !isProcessedConcurrently.test(inlinee);
+    assert !methodProcessor.isProcessedConcurrently(inlinee);
     if (!exemptFromInstructionLimit(inlinee)) {
       if (invoke != null) {
         directInlinees.put(invoke, inlinee);
@@ -1072,7 +1073,7 @@
     if (!singleTarget.isProgramMethod(appView)) {
       return false;
     }
-    if (isProcessedConcurrently.test(singleTarget)) {
+    if (methodProcessor.isProcessedConcurrently(singleTarget)) {
       return false;
     }
     if (!singleTarget.isInliningCandidate(
