void (int[] starts, int[] ends) { List<Data.Block> result = new ArrayList<>(3); int[] rangeStarts = new int[myCount]; int[] rangeEnds = new int[myCount]; for (int number = 0; ; number++) { int shift = getRangeShift(mySettings.range, number); if (shift == -1) break; for (int i = 0; i < myCount; i++) { rangeStarts[i] = DiffUtil.bound(starts[i] + shift, 0, myLineCount[i]); rangeEnds[i] = DiffUtil.bound(ends[i] - shift, 0, myLineCount[i]); } ContainerUtil.addIfNotNull(result, createBlock(rangeStarts, rangeEnds)); } if (result.size() > 0) { myGroups.add(new Data.Group(result)); } }