diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/JavaSmartStepIntoHandler.java b/java/debugger/impl/src/com/intellij/debugger/actions/JavaSmartStepIntoHandler.java index 2e4b92f41102..5983829448cb 100644 --- a/java/debugger/impl/src/com/intellij/debugger/actions/JavaSmartStepIntoHandler.java +++ b/java/debugger/impl/src/com/intellij/debugger/actions/JavaSmartStepIntoHandler.java @@ -26,7 +26,6 @@ import com.intellij.psi.*; import com.intellij.util.DocumentUtil; import com.intellij.util.Range; import com.intellij.util.ThreeState; -import com.intellij.util.containers.OrderedSet; import com.sun.jdi.Location; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -37,10 +36,7 @@ import org.jetbrains.org.objectweb.asm.Label; import org.jetbrains.org.objectweb.asm.MethodVisitor; import org.jetbrains.org.objectweb.asm.Opcodes; -import java.util.Collections; -import java.util.Deque; -import java.util.LinkedList; -import java.util.List; +import java.util.*; public class JavaSmartStepIntoHandler extends JvmSmartStepIntoHandler { private static final Logger LOG = Logger.getInstance(JavaSmartStepIntoHandler.class); @@ -123,7 +119,7 @@ public class JavaSmartStepIntoHandler extends JvmSmartStepIntoHandler { } while (true); - final List targets = new OrderedSet<>(); + final List targets = new ArrayList<>(); final Ref textRange = new Ref<>(lineRange); @@ -325,13 +321,17 @@ public class JavaSmartStepIntoHandler extends JvmSmartStepIntoHandler { @Override public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { if (myLineMatch) { - targets.removeIf(t -> { - if (t instanceof MethodSmartStepTarget) { - return DebuggerUtilsEx.methodMatches(((MethodSmartStepTarget)t).getMethod(), - owner.replace("/", "."), name, desc, suspendContext.getDebugProcess()); + Iterator iterator = targets.iterator(); + while (iterator.hasNext()) { + SmartStepTarget e = iterator.next(); + if (e instanceof MethodSmartStepTarget && + DebuggerUtilsEx.methodMatches(((MethodSmartStepTarget)e).getMethod(), + owner.replace("/", "."), name, desc, + suspendContext.getDebugProcess())) { + iterator.remove(); + break; } - return false; - }); + } } } }, true);