// TODO: base on AbstractList to speed up subList().clear()
// Note: We just assume the wrapped list is RandomAccess;
// technically we should have 2 separate classes.
persistable abstract sclass NotifyingList extends NotifyingCollection is L, RandomAccess {
L list;
*(List *list) {
super(list);
}
public L subList(int i, int j) { throw todo(); }
protected void setInnerList(L list) {
c = this.list = list;
}
void init { setInnerList(new L); }
void initAndAddAll(Cl l) { init(); addAll(l); }
!include #1012666
}