@NotNull
  private MergeRequest createBinaryMergeRequest(@Nullable Project project,
                                                @NotNull VirtualFile output,
                                                @NotNull List<byte[]> byteContents,
                                                @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();

    try {
      FileContent outputContent = myContentFactory.createFile(project, output);
      if (outputContent == null) throw new InvalidDiffRequestException("Can't process file: " + output);
      byte[] originalContent = ReadAction.compute(() -> output.contentsToByteArray());

      List<DiffContent> contents = new ArrayList<>(3);
      for (byte[] bytes : byteContents) {
        contents.add(myContentFactory.createFromBytes(project, notNull(bytes, EMPTY_BYTE_ARRAY), output));
      }

      return new BinaryMergeRequestImpl(project, outputContent, originalContent, contents, byteContents, title, contentTitles);
    }
    catch (IOException e) {
      throw new InvalidDiffRequestException("Can't read from file", e);
    }
  }
@NotNull
  private MergeRequest createBinaryMergeRequest(@Nullable Project project,
                                                @NotNull VirtualFile output,
                                                @NotNull List<byte[]> byteContents,
                                                @Nullable @NlsContexts.DialogTitle String title,
                                                @NotNull List<@Nls String> contentTitles)