static L lineComp_replacePairWithUpdatingPairCount_v2(IContentsIndexedList2 l, Int pa, Int pb, Int y, LineComp_PairCounts pairCounts) { int i = 0, copyFrom = 0, copyTo = 0, n = l(l); while (true) { i = indexOfIntPairInContentsIndexedList(l, pa, pb, i); if (i < 0) break; if (copyFrom != copyTo) { while (copyFrom < i) l.set(copyTo++, l.get(copyFrom++)); } else copyTo = copyFrom = i; pairCounts.removeAll(overlappingIntPairs(subList(lineComp_listWithGap(l, copyTo, copyFrom), copyTo-1, copyTo+3))); l.set(i, y); copyFrom += 2; copyTo++; pairCounts.addAll(overlappingIntPairs(subList(lineComp_listWithGap(l, copyTo, copyFrom), copyTo-2, copyTo+1))); i += 2; } if (copyFrom != copyTo) { while (copyFrom < n) l.set(copyTo++, l.get(copyFrom++)); truncateList(l, copyTo); } ret l; }