!7 set flag ConceptRef_markInToString. set flag MetaTransformer_debug. concept Bla { S name; new RefL references; } module > DynPrintLog { start-thread { new Concepts cc; Bla a = cnew(cc, Bla, name := "a"); Bla b = cnew(cc, Bla, name := "hello", whatever := 123, ref := a, references := ll(a, a)); pnl(conceptShadow_rawMap(a)); ConceptShadow shadow = ConceptShadow(a); print(shadow); shadow.convertRefsToIDs(); print(shadow); pnl(conceptShadow_rawMap(b)); shadow = ConceptShadow(b); print(shadow); shadow.convertRefsToIDs(); print(shadow); assertEqualsVerbose(ConceptID(a.id), shadow.get("ref")); assertEqualsVerbose(ll(ConceptID(a.id), ConceptID(a.id)), shadow.get("references")); assertEqualsVerbose(b.id, shadow.get("id")); assertEqualsVerbose("hello", shadow.get("name")); // check that 2 shadows of same unchanged object are equal assertEqualsVerbose(shadow, ConceptShadow(b)); } }