@Override
    protected @NotNull List<LineFragment> computeFragments() {
      LineOffsets beforeLineOffsets = LineOffsetsUtil.create(myBeforeContent);
      LineOffsets afterChangeLineOffsets = LineOffsetsUtil.create(myAfterChangeContent);
      LineOffsets afterLineOffsets = LineOffsetsUtil.create(myAfterContent);

      FairDiffIterable committedLines = RangesBuilder.compareLines(myBeforeContent, myAfterChangeContent,
                                                                   beforeLineOffsets, afterChangeLineOffsets);
      FairDiffIterable localLines = RangesBuilder.compareLines(myAfterChangeContent, myAfterContent,
                                                               afterChangeLineOffsets, afterLineOffsets);

      ChangedRangesShifter builder = new ChangedRangesShifter();
      List<Range> ranges = builder.execute(committedLines, localLines);

      DiffIterable iterable = DiffIterableUtil.create(ranges, beforeLineOffsets.getLineCount(), afterLineOffsets.getLineCount());
      return ComparisonManagerImpl.convertIntoLineFragments(beforeLineOffsets, afterLineOffsets, iterable);
    }
@Override
    protected @NotNull List<LineFragment> computeFragments()