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