// 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)); } }; }