// inner list can be a normal ArrayList static L notifyingList(L innerList, final Runnable onChange) { ret new NotifyingList(innerList) { void change() { onChange.run(); } }; } static L notifyingList(Runnable onChange) { ret listWithNotify(onChange); } static L notifyingList(fO onChange) { ret listWithNotify(onChange); }