Aspect interface for inherit.beh/markVisitors Program = ClassGraph. ClassGraph = DList(ClassGraphEntry). ClassGraphEntry : Directive | Definition. Directive : VisitorDirective . Definition : ClassDef. ClassDef = . VisitorKeyword : BeginVisitors | EndVisitors. BeginVisitors = "visitors". EndVisitors = "endvisitors". Strategy: from Program to { BeginVisitors, EndVisitors, ClassDef } Implementation: (@ boolean visitor = false; @) before BeginVisitors (@ visitor = true; @) before EndVisitors (@ visitor = false; @) before ClassDef (@ if (visitor) host.markVisitor(); @) ============= Aspect interface for inherit.beh/setInheritanceLinks ClassDef = ClassParts. ClassParts : AlternationClass common List(Part) ClassParents. AlternationClass = ":" Barlist(Subclass) ]. ClassParents = [ Superclasses ] [ Interfaces ]. Superclasses = ExtendsKeyword Commalist(Superclass). Superclass = ClassSpec. Interfaces = ImplementsKeyword Commalist(Interface). Interface = ClassSpec. strategies: from Program to Subclass visitor: before ClassDef before Subclass so the strategy should be: from Program via ClassDef to Subclass