List<DiffFragment> (@NotNull CharSequence text1, @NotNull List<? extends InlineChunk> words1, @NotNull CharSequence text2, @NotNull List<? extends InlineChunk> words2, @NotNull ComparisonPolicy policy, @NotNull CancellationChecker indicator) { FairDiffIterable wordChanges = diff(words1, words2, indicator); wordChanges = optimizeWordChunks(text1, text2, words1, words2, wordChanges, indicator); FairDiffIterable delimitersIterable = matchAdjustmentDelimiters(text1, text2, words1, words2, wordChanges, indicator); DiffIterable iterable = matchAdjustmentWhitespaces(text1, text2, delimitersIterable, policy, indicator); return convertIntoDiffFragments(iterable); }