static L wrapAsVirtualReversedList(A[] array) { int n = l(array); ret new RandomAccessAbstractList { public int size() { ret n; } public A get(int i) { ret array[i]; } public A set(int i, A a) { A old = array[i]; array[i] = a; ret old; } }; }