void (@NotNull List<? extends Node> toUpdate, @NotNull Runnable onCompletedInEdt) { if (toUpdate.isEmpty() || isDisposed()) return; ReadAction .nonBlocking(() -> { for (Node node : toUpdate) { try { node.update(edtFireTreeNodesChangedQueue); } catch (IndexNotReadyException ignore) { } } }) .expireWith(this) .finishOnUiThread(ModalityState.defaultModalityState(), __ -> onCompletedInEdt.run()) .submit(updateRequests); }