Account for invoke-interface instructions in StringMethodOptimizer

Bug: b/230821936
Change-Id: Ic5990fd7ce6e83100501011ca6c3239637f92026
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/library/StringMethodOptimizer.java b/src/main/java/com/android/tools/r8/ir/optimize/library/StringMethodOptimizer.java
index e5483db..6e4abef 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/library/StringMethodOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/library/StringMethodOptimizer.java
@@ -19,8 +19,8 @@
 import com.android.tools.r8.ir.code.Instruction;
 import com.android.tools.r8.ir.code.InstructionListIterator;
 import com.android.tools.r8.ir.code.InvokeMethod;
+import com.android.tools.r8.ir.code.InvokeMethodWithReceiver;
 import com.android.tools.r8.ir.code.InvokeStatic;
-import com.android.tools.r8.ir.code.InvokeVirtual;
 import com.android.tools.r8.ir.code.Value;
 import java.util.Set;
 
@@ -50,14 +50,14 @@
       Set<BasicBlock> blocksToRemove) {
     DexMethod singleTargetReference = singleTarget.getReference();
     if (singleTargetReference == dexItemFactory.stringMembers.equals) {
-      optimizeEquals(code, instructionIterator, invoke.asInvokeVirtual());
+      optimizeEquals(code, instructionIterator, invoke.asInvokeMethodWithReceiver());
     } else if (singleTargetReference == dexItemFactory.stringMembers.valueOf) {
       optimizeValueOf(code, instructionIterator, invoke.asInvokeStatic(), affectedValues);
     }
   }
 
   private void optimizeEquals(
-      IRCode code, InstructionListIterator instructionIterator, InvokeVirtual invoke) {
+      IRCode code, InstructionListIterator instructionIterator, InvokeMethodWithReceiver invoke) {
     if (appView.appInfo().hasLiveness()) {
       ProgramMethod context = code.context();
       Value first = invoke.getReceiver().getAliasedValue();