boolean (@NonNls @NotNull Object key, @NotNull Runnable action) { ThreadingAssertions.assertEventDispatchThread(); if (myProject.isDisposed()) { action.run(); return true; } if (!hasEventSystemEnabledUncommittedDocuments()) { if (!isCommitInProgress()) { // in case of fireWriteActionFinished() we didn't execute 'actionsWhenAllDocumentsAreCommitted' yet assert actionsWhenAllDocumentsAreCommitted.isEmpty() : actionsWhenAllDocumentsAreCommitted + "; uncommitted docs: " + StringUtil.join(myUncommittedDocuments, document->document+":isEventSystemEnabled="+isEventSystemEnabled(document)+":virtualFile="+getVirtualFile(document), ","); } action.run(); return true; } assertWeAreOutsideAfterCommitHandler(); actionsWhenAllDocumentsAreCommitted.put(key, ClientId.decorateRunnable(action)); return false; }