static LPair concatenateAdjacentDoubleRanges(LPair l) { new LPair out; fOr (p : l) if (concatenatableRanges(pairA(last(out)), p.a) && eq(pairB(last(out)), p.b)) replaceLast(out, pair(joinDoubleRanges(pairA(last(out)), p.a), p.b); else out.add(p); ret out; }