sclass ConceptShadow { Map map; bool refsConvertedToIDs; *(Concept c) { map = conceptShadow_rawMap(c); MetaTransformer tf = metaTransformer_collectionAndMap(); // deference concept refs map = toMinimalMap((Map) tf.transform(lambda1 derefRef, map); } void convertRefsToIDs { if (refsConvertedToIDs) ret; set refsConvertedToIDs; MetaTransformer tf = metaTransformer_collectionAndMap(); map = toMinimalMap(mapValues(map, o -> tf.transform(lambda1 conceptToIDObj_gen, o))); } toString { ret "ConceptShadow " + stringIf(refsConvertedToIDs, "[converted] ") + map; } }