// virtual view into a list that with a "gap" (elements in the middle being removed)
static L lineComp_listWithGap(L l, int copyTo, int copyFrom) {
if (copyFrom == copyTo) ret l;
ret new RandomAccessAbstractList {
int size = l.size()-(copyFrom-copyTo);
public int size() { ret size; }
public A get(int i) {
ret l.get(i < copyTo ? i : i+(copyFrom-copyTo));
}
};
}