// 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 }