sclass TypeArray extends ArrayList { Class type; *() {} *(Class *type) {} 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? }