void (int start1, int end1, int start2, int end2) { Range expand = expand(myLines1, myLines2, start1, start2, end1, end2); List<? extends Line> inner1 = myLines1.subList(expand.start1, expand.end1); List<? extends Line> inner2 = myLines2.subList(expand.start2, expand.end2); FairDiffIterable innerChanges = diff(inner1, inner2, myIndicator); myBuilder.markEqual(start1, start2, expand.start1, expand.start2); for (Range chunk : innerChanges.iterateUnchanged()) { myBuilder.markEqual(expand.start1 + chunk.start1, expand.start2 + chunk.start2, chunk.end1 - chunk.start1); } myBuilder.markEqual(expand.end1, expand.end2, end1, end2); }