sclass MetaTransformer { sinterface StructureHandler { O transform(IF1 f, O o, MetaTransformer mt); } L structureHandlers; //bool keepUnknown; // assume true for now O transform(IF1 f, O o) { try object f.get(o); fOr (StructureHandler h : structureHandlers) try object h.transform(f, o, this); //ret keepUnknown ? o : null; ret o; } }