sclass ConceptShadow { Map map; *(Concept c) { map = conceptShadow_rawMap(c); map = toSortedArrayBasedMap(mapValues convertValue(map)); } O convertValue(O o) { if (o cast Concept.Ref) ret conceptIDObject(o!); if (o instanceof Concept.RefL) ret lmap conceptIDObject((L) o); if (o cast Concept) ret ConceptID(o); ret o; } toString { ret "ConceptShadow " + map; } O get(O key) { ret mapGet(map, key); } public bool equals(O o) { if (o cast ConceptShadow) ret eq(map, o.map); false; } public int hashCode() { ret _hashCode(map); } long id() { ret toLong(get("id")); } }