void (@NotNull VirtualFile root, @Nullable FilePath leftPath, @NotNull Hash leftHash, @Nullable FilePath rightPath, @NotNull Hash rightHash) { if (leftPath == null && rightPath == null) return; FilePath filePath = chooseNotNull(leftPath, rightPath); if (filePath.isDirectory()) { showDiffForPaths(root, Collections.singleton(filePath), leftHash, rightHash); } else { DiffRequestProducer requestProducer = SimpleDiffRequestProducer.create(filePath, () -> { DiffContent leftDiffContent = createDiffContent(root, leftPath, leftHash); DiffContent rightDiffContent = createDiffContent(root, rightPath, rightHash); return new SimpleDiffRequest(getTitle(leftPath, rightPath, DIFF_TITLE_RENAME_SEPARATOR), leftDiffContent, rightDiffContent, leftHash.asString(), rightHash.asString()); }); SimpleDiffRequestChain chain = SimpleDiffRequestChain.fromProducer(requestProducer); UIUtil.invokeLaterIfNeeded(() -> DiffManager.getInstance().showDiff(myProject, chain, DiffDialogHints.DEFAULT)); } }