void (@NotNull Runnable task) { if (isDisposed()) return; ThreadingAssertions.assertEventDispatchThread(); fireEvents(); // drain all remaining insertion events in the queue myExpandingCollapsing = true; try { task.run(); } finally { myExpandingCollapsing = false; } }