@SuppressWarnings("unchecked")
  private static @NotNull DiffRequest createMergeRequest(@Nullable Project project,
                                                         @NotNull ProgressIndicator indicator,
                                                         @NotNull Change change,
                                                         @NotNull UserDataHolder context) throws DiffRequestProducerException {
    FilePath path = ChangesUtil.getFilePath(change);
    VirtualFile file = path.getVirtualFile();
    if (file == null) {
      file = LocalFileSystem.getInstance().refreshAndFindFileByPath(path.getPath());
    }
    if (file == null) throw new DiffRequestProducerException(DiffBundle.message("error.cant.show.merge.file.not.found"));

    if (project == null) {
      throw new DiffRequestProducerException(DiffBundle.message("error.cant.show.merge.project.not.found"));
    }
    final AbstractVcs vcs = ChangesUtil.getVcsForChange(change, project);
    if (vcs == null || vcs.getMergeProvider() == null) {
      throw new DiffRequestProducerException(DiffBundle.message("error.cant.show.merge.operation.not.supported"));
    }
    try {
      MergeData mergeData = vcs.getMergeProvider().loadRevisions(file);

      ContentRevision bRev = change.getBeforeRevision();
      ContentRevision aRev = change.getAfterRevision();
      String beforeRevisionTitle = getRevisionTitle(bRev, getYourVersion());
      String afterRevisionTitle = getRevisionTitle(aRev, getServerVersion());

      String title = DiffRequestFactory.getInstance().getTitle(file);
      List<String> titles = Arrays.asList(beforeRevisionTitle, getBaseVersion(), afterRevisionTitle);

      List<byte[]> byteContents = Arrays.asList(mergeData.CURRENT, mergeData.ORIGINAL, mergeData.LAST);
      List<DocumentContent> contents = DiffUtil.getDocumentContentsForViewer(project, byteContents, file, mergeData.CONFLICT_TYPE);

      SimpleDiffRequest request = new SimpleDiffRequest(title, new ArrayList<>(contents), titles);
      MergeUtils.putRevisionInfos(request, mergeData);

      return request;
    }
    catch (VcsException e) {
      LOG.info(e);
      throw new DiffRequestProducerException(e);
    }
  }
@SuppressWarnings("unchecked")
  private static @NotNull DiffRequest createMergeRequest(@Nullable Project project,
                                                         @NotNull ProgressIndicator indicator,
                                                         @NotNull Change change,
                                                         @NotNull UserDataHolder context)