void () { if (isDisposed() || myProject.isDisposed()) return; ApplicationManager.getApplication().invokeAndWait(() -> { if (isDisposed() || myProject.isDisposed()) return; isUpdating = true; updateActions(); myDiffView.startLoading(); }); Runnable apply = null; try { apply = update.compute(); } catch (Exception e) { LocalHistoryLog.LOG.error(e); } final Runnable finalApply = apply; ApplicationManager.getApplication().invokeAndWait(() -> { if (isDisposed() || myProject.isDisposed()) return; isUpdating = false; if (finalApply != null) { try { finalApply.run(); } catch (Exception e) { LocalHistoryLog.LOG.error(e); } } updateActions(); myDiffView.stopLoading(); }); }