sclass UniqueList extends RandomAccessAbstractList { new L list; new Map index; // position of each element public A get(int i) { ret list.get(i); } public int size() { ret list.size(); } // couldn't come up with a better name here... add element or // get its index if it's already there int addOrGetIndex(A a) { Int i = index.get(a); if (i == null) { index.put(a, i = size()); list.add(a); } ret i; } public bool add(A a) { int n = size(); ret addOrGetIndex(a) == n; } }