final sclass SimpleStack extends RandomAccessAbstractList {
new ArrayList l;
int peak;
public get(int i) { ret l.get(i); }
public int size() { ret l.size(); }
public A set(int i, A a) { ret l.set(i, a); }
public void add(int i, A a) { l.add(i, a); checkSize(); }
public A remove(int i) { l.remove(i); checkSize(); }
void checkSize {
int n = size();
if (n > peak) peak = n; // record new peak size (~actual capacity)
if (n*2 < peak) { // shrink physically when below half of peak
trimToSize(l);
peak = n;
}
}
}