FairDiffIterable (@NotNull List<? extends Line> lines1, @NotNull List<? extends Line> lines2, @NotNull CancellationChecker indicator) { int threshold = ComparisonUtil.getUnimportantLineCharCount(); if (threshold == 0) return diff(lines1, lines2, indicator); Pair<List<Line>, IntList> bigLines1 = getBigLines(lines1, threshold); Pair<List<Line>, IntList> bigLines2 = getBigLines(lines2, threshold); FairDiffIterable changes = diff(bigLines1.first, bigLines2.first, indicator); return new ChangeCorrector.SmartLineChangeCorrector(bigLines1.second, bigLines2.second, lines1, lines2, changes, indicator).build(); }