@NotNull
  private TextMergeRequest createTextMergeRequest(@Nullable Project project,
                                                  @NotNull VirtualFile output,
                                                  @NotNull List<byte[]> byteContents,
                                                  @Nullable ConflictType conflictType,
                                                  @Nullable @NlsContexts.DialogTitle String title,
                                                  @NotNull List<@Nls String> contentTitles) throws InvalidDiffRequestException {
    if (byteContents.size() != 3) throw new IllegalArgumentException();
    if (contentTitles.size() != 3) throw new IllegalArgumentException();

    final Document outputDocument = ReadAction.compute(() -> FileDocumentManager.getInstance().getDocument(output));
    if (outputDocument == null) throw new InvalidDiffRequestException("Can't get output document: " + output.getPresentableUrl());
    if (!DiffUtil.canMakeWritable(outputDocument)) throw new InvalidDiffRequestException("Output is read only: " + output.getPresentableUrl());

    DocumentContent outputContent = myContentFactory.create(project, outputDocument);
    CharSequence originalContent = outputDocument.getImmutableCharSequence();

    List<DocumentContent> contents = DiffUtil.getDocumentContentsForViewer(project, byteContents, output, conflictType);

    return new TextMergeRequestImpl(project, outputContent, originalContent, contents, title, contentTitles);
  }
@NotNull
  private TextMergeRequest createTextMergeRequest(@Nullable Project project,
                                                  @NotNull VirtualFile output,
                                                  @NotNull List<byte[]> byteContents,
                                                  @Nullable ConflictType conflictType,
                                                  @Nullable @NlsContexts.DialogTitle String title,
                                                  @NotNull List<@Nls String> contentTitles)