concept BEAObject > ConceptWithGlobalID { toString { S type = type(); ret nempty(type) ? "[\*id*/] " + type : super.toString(); } S type() { ret getStringOpt type(this); } bool typeIs(S name) { ret eqic(type(), name); } bool canReactWith(BEAObject o) { ret isInstanceOfAny(o, (Cl) reactableWithClasses()); } Cl> reactableWithClasses() { ret singleArgumentMethodTypesSubclassing(this, "reactWith", BEAObject); } }