static final class TArray extends ArrayList {
Class type;
*() {}
*(Class *type) {}
TArray castMe() { ret (TArray) this; }
public bool add(A a) {
assertIsInstance(type, a);
ret super.add(a);
}
public void set(int i, A a) {
assertIsInstance(type, a);
super.set(i, a);
}
public int size() { ret l.size(); }
public A get(int i) {
ret l.get(i);
}
// overwrite more methods?
}