diff --git a/platform/util/src/com/intellij/util/messages/impl/MessageBusImpl.java b/platform/util/src/com/intellij/util/messages/impl/MessageBusImpl.java index 02aed77abdf5..ce8aff98a361 100644 --- a/platform/util/src/com/intellij/util/messages/impl/MessageBusImpl.java +++ b/platform/util/src/com/intellij/util/messages/impl/MessageBusImpl.java @@ -4,7 +4,6 @@ package com.intellij.util.messages.impl; import com.intellij.openapi.Disposable; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProcessCanceledException; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Disposer; import com.intellij.util.ConcurrencyUtil; import com.intellij.util.EventDispatcher; @@ -333,15 +332,19 @@ public class MessageBusImpl implements MessageBus { } else { final Map map = asRoot().myWaitingBuses.get(); - if (map != null) { - List buses = ContainerUtil.filter(map.keySet(), new Condition() { - @Override - public boolean value(MessageBusImpl bus) { - return ensureAlive(map, bus); + if (map != null && !map.isEmpty()) { + List liveBuses = null; + for (MessageBusImpl bus : map.keySet()) { + if (ensureAlive(map, bus)) { + if (liveBuses == null) { + liveBuses = new SmartList(); + } + liveBuses.add(bus); } - }); - if (!buses.isEmpty()) { - pumpWaitingBuses(buses); + } + + if (liveBuses != null) { + pumpWaitingBuses(liveBuses); } } }