diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/impl/VirtualFilePointerTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/impl/VirtualFilePointerTest.java index 45e13c82bd41..55fbc5d772af 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/impl/VirtualFilePointerTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/impl/VirtualFilePointerTest.java @@ -398,11 +398,11 @@ public class VirtualFilePointerTest extends PlatformLangTestCase { PlatformTestUtil.startPerformanceTest("VF container create/delete",200, new ThrowableRunnable() { @Override public void run() throws Exception { + Disposable parent = Disposer.newDisposable(); for (int i = 0; i < 10000; i++) { - Disposable parent = Disposer.newDisposable(); myVirtualFilePointerManager.createContainer(parent); - Disposer.dispose(parent); } + Disposer.dispose(parent); } }).cpuBound().assertTiming(); } diff --git a/platform/util/src/com/intellij/openapi/util/objectTree/ObjectNode.java b/platform/util/src/com/intellij/openapi/util/objectTree/ObjectNode.java index 2f66e82aa1e8..a349750afd75 100644 --- a/platform/util/src/com/intellij/openapi/util/objectTree/ObjectNode.java +++ b/platform/util/src/com/intellij/openapi/util/objectTree/ObjectNode.java @@ -26,6 +26,7 @@ import org.jetbrains.annotations.TestOnly; import java.util.Collection; import java.util.Collections; +import java.util.ListIterator; public final class ObjectNode { private static final ObjectNode[] EMPTY_ARRAY = new ObjectNode[0]; @@ -73,7 +74,13 @@ public final class ObjectNode { void removeChild(@NotNull ObjectNode child) { synchronized (myTree.treeLock) { assert myChildren != null: "No children to remove child: " + this + ' ' + child; - myChildren.remove(child); + ListIterator> iterator = myChildren.listIterator(myChildren.size()); + while (iterator.hasPrevious()) { + if (child.equals(iterator.previous())) { + iterator.remove(); + return; + } + } } }