void () { myStatusPanel.setBusy(true); myInnerDiffWorker.disable(); // This is made to reduce unwanted modifications before rediff is finished. // It could happen between this init() EDT chunk and invokeLater(). getEditor().setViewer(true); myLoadingPanel.startLoading(); myAcceptResolveAction.setEnabled(false); BackgroundTaskUtil.executeAndTryWait(indicator -> BackgroundTaskUtil.runUnderDisposeAwareIndicator(this, () -> { try { return doPerformRediff(indicator); } catch (ProcessCanceledException e) { return () -> myMergeContext.finishMerge(MergeResult.CANCEL); } catch (Throwable e) { LOG.error(e); return () -> myMergeContext.finishMerge(MergeResult.CANCEL); } }), null, ProgressIndicatorWithDelayedPresentation.DEFAULT_PROGRESS_DIALOG_POSTPONE_TIME_MILLIS, ApplicationManager.getApplication().isUnitTestMode()); }