@NotNull
  public static List<DiffFragment> compare(@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);
  }
@NotNull
  public static List<DiffFragment> compare(@NotNull CharSequence text1, @NotNull List<? extends InlineChunk> words1,
                                           @NotNull CharSequence text2, @NotNull List<? extends InlineChunk> words2,
                                           @NotNull ComparisonPolicy policy,
                                           @NotNull CancellationChecker indicator)