diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java b/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java index c53f80661f0f..67f1e7b73cfd 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java @@ -36,10 +36,7 @@ import com.sun.jdi.request.ClassPrepareRequest; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Set; +import java.util.*; public class CompoundPositionManager extends PositionManagerEx implements MultiRequestPositionManager{ private static final Logger LOG = Logger.getInstance(CompoundPositionManager.class); @@ -57,9 +54,10 @@ public class CompoundPositionManager extends PositionManagerEx implements MultiR public void appendPositionManager(PositionManager manager) { myPositionManagers.remove(manager); myPositionManagers.add(0, manager); + mySourcePositionCache.clear(); } - private final Cache mySourcePositionCache = new Cache<>(); + private final Map mySourcePositionCache = new WeakHashMap<>(); private interface Processor { T process(PositionManager positionManager) throws NoDataException; @@ -196,21 +194,4 @@ public class CompoundPositionManager extends PositionManagerEx implements MultiR } return ThreeState.UNSURE; } - - private static class Cache { - private K myKey; - private V myValue; - - public V get(@NotNull K key) { - if (key.equals(myKey)) { - return myValue; - } - return null; - } - - public void put(@NotNull K key, V value) { - myKey = key; - myValue = value; - } - } }