!7 set flag ConceptRef_markInToString. //set flag MetaTransformer_debug. concept Bla { S name; new Ref myRef; 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, myRef := a, references := ll(a, a)); pnl(conceptShadow_rawMap(a)); ConceptShadow shadow = ConceptShadow(a); print(shadow); pnl(conceptShadow_rawMap(b)); shadow = ConceptShadow(b); print(shadow); assertEqualsVerbose(getClassName(Bla), shadow.get(":class")); assertEqualsVerbose(ConceptID(a.id), shadow.get("ref")); assertEqualsVerbose(ConceptID(a.id), shadow.get("myRef")); 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)); // change object cset(b, name := "newName"); ConceptShadow shadow2 = new(b); assertNotEqualsVerbose(shadow, shadow2); } }