sclass UniqueList extends RandomAccessAbstractList {
new L list;
new Map index;
public A get(int i) { ret list.get(i); }
public int size() { ret list.size(); }
int addOrGetIndex(A a) {
Int i = index.get(a);
if (i == null) {
map.put(a, i = size());
list.add(a);
}
ret i;
}
public bool add(A a) {
int n = size();
ret addOrGetIndex(a) == n;
}
}