@RequiresEdt
  private void doRediff() {
    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());
  }
@RequiresEdt
  private void doRediff()