@Nullable
  @Override
  protected DiffRequestChain getDiffRequestChain(@NotNull AnActionEvent e) {
    Project project = e.getProject();
    Editor editor = getEditor(e);
    FileType editorFileType = getEditorFileType(e);
    assert editor != null;

    DiffContent selectedContent = e.getData(DiffDataKeys.CURRENT_CONTENT);
    DocumentContent content2 = createContent(project, editor, editorFileType, selectedContent, e);
    DocumentContent content1 = DiffContentFactory.getInstance().createClipboardContent(project, content2);
    content1.putUserData(BlankDiffWindowUtil.REMEMBER_CONTENT_KEY, true);

    VirtualFile editorFile = FileDocumentManager.getInstance().getFile(editor.getDocument());
    String editorContentTitle = editorFile != null
                                ? DiffRequestFactory.getInstance().getContentTitle(editorFile)
                                : DiffBundle.message("diff.content.editor.content.title");
    if (editor.getSelectionModel().hasSelection()) {
      editorContentTitle = DiffBundle.message("diff.content.selection.from.file.content.title", editorContentTitle);
    }

    MutableDiffRequestChain chain = BlankDiffWindowUtil.createBlankDiffRequestChain(content1, content2, null);
    String windowTitle = editorFile != null ? DiffBundle.message("diff.clipboard.vs.editor.dialog.title.with.filename",
                                                                 editorFile.getName())
                                            : DiffBundle.message("diff.clipboard.vs.editor.dialog.title");
    chain.setWindowTitle(windowTitle);
    chain.setTitle1(DiffBundle.message("diff.content.clipboard.content.title"));
    chain.setTitle2(editorContentTitle);

    int currentLine = editor.getCaretModel().getLogicalPosition().line;
    chain.putRequestUserData(DiffUserDataKeys.SCROLL_TO_LINE, Pair.create(Side.RIGHT, currentLine));

    return chain;
  }
@Nullable
  @Override
  protected DiffRequestChain getDiffRequestChain(@NotNull AnActionEvent e)