List<LineFragment> () { 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); }