sclass ConceptsShadowLogger { Concepts cc; L shadows; new LinkedHashSet changedIDs; bool fullChange; Writer writer; IVF1 changeHandler = change -> { if (change cast ConceptChange) changedIDs.add(change.c.id); else if (change cast ConceptDelete) changedIDs.add(change.id); else if (change cast FullChange) fullChange = true; }; *() {} *(Concepts *cc) {} void install { makeShadows(); cc.onChange(changeHandler); } void uninstall { cc.removeChangeListener(changeHandler); } void makeShadows { shadows = allConceptShadows(cc); } void flush { } }