// This file is automatically generated by DemeterJ.

UniversalVisitor {
  start {{ }}
  before { 
    Main,
    SelectorLanguage, -> SelectorLanguage,strategylanguage,StrategyLanguage, -> SelectorLanguage,nodesubsetlanguage,NodeSubsetLanguage, -> SelectorLanguage,selectorname,SelectorName, -> SelectorLanguage,classdict,ClassDict,
    SelectorName, -> SelectorName,ident,Ident,
    ClassDict, -> ClassDict,text,Text,
    StrategyLanguage, -> StrategyLanguage,strategydef_nplist,StrategyDef_NPList,
    StrategyDef, -> StrategyDef,strategyname,StrategyName, -> StrategyDef,strategyexpression,StrategyExpression,
    NodeSubsetLanguage, -> NodeSubsetLanguage,nodesubsetspec_plist,NodeSubsetSpec_PList,
    NodeSubsetSpec, -> NodeSubsetSpec,nodesubsetname,NodeSubsetName, -> NodeSubsetSpec,nodesubsetexpression,NodeSubsetExpression,
    NodeSubsetExpression,
    Simple,
    Compound, -> Compound,op,Operator, -> Compound,args,NodeSubsetExpression_List,
    Operator,
    Union,
    Intersection,
    Complement,
    ClassNameSet, -> ClassNameSet,classname_bclist,ClassName_BCList,
    GraphNodes, -> GraphNodes,strategyname,StrategyName,
    GraphNodeRegExp, -> GraphNodeRegExp,classname,ClassName, -> GraphNodeRegExp,wildcard,WildCard,
    WildCard,
    StrategyExpression, -> StrategyExpression,strategy,Strategy,
    Strategy,
    SimpleStrategy, -> SimpleStrategy,parsedNameMap,NameMap,
    StrategyGraph, -> StrategyGraph,edges,SGEdge_SList,
    SGEdge, -> SGEdge,sourcemarker,SourceMarker, -> SGEdge,source,GlobSpec, -> SGEdge,targetmarker,TargetMarker, -> SGEdge,target,GlobSpec, -> SGEdge,constraint,NegativeConstraint,
    SourceMarker,
    TargetMarker,
    PathDirective, -> PathDirective,source,SourceDirective, -> PathDirective,constraint,NegativeConstraint, -> PathDirective,segments,PathSegment_List, -> PathDirective,target,TargetDirective,
    SourceDirective, -> SourceDirective,sources,ClassGlobSpec,
    From,
    PathSegment, -> PathSegment,node,PositiveConstraint, -> PathSegment,constraint,NegativeConstraint,
    Constraint, -> Constraint,glob,GlobSpec,
    PositiveConstraint,
    Through,
    Via,
    NegativeConstraint,
    Bypassing,
    OnlyThrough,
    TargetDirective, -> TargetDirective,targets,ClassGlobSpec,
    To,
    ToStop,
    StrategyCombination, -> StrategyCombination,first,Strategy, -> StrategyCombination,rest,Strategy_Commalist,
    Join,
    Merge,
    Intersect,
    StrategyReference, -> StrategyReference,ident,Ident,
    SymbolicNameMap,
    NameMap, -> NameMap,bindings,NameBinding_Commalist,
    NameBinding, -> NameBinding,sgName,Name, -> NameBinding,cgNames,ClassGlobSpec,
    GlobSpec,
    OneGlob, -> OneGlob,glob,Glob,
    GlobSet, -> GlobSet,globs,Glob_Commalist,
    Glob,
    EdgeGlob,
    ClassGlob, -> ClassGlob,name,ClassNameGlob,
    PartGlob, -> PartGlob,source,SourceGlob, -> PartGlob,name,PartNameGlob, -> PartGlob,target,TargetGlob,
    SubclassGlob, -> SubclassGlob,source,SourceGlob, -> SubclassGlob,target,TargetGlob,
    SuperclassGlob, -> SuperclassGlob,source,SourceGlob, -> SuperclassGlob,target,TargetGlob,
    SourceGlob, -> SourceGlob,name,ClassNameGlob,
    TargetGlob, -> TargetGlob,name,ClassNameGlob,
    ClassNameGlob,
    ClassNameExact, -> ClassNameExact,classname,ClassName,
    AnyClass,
    PartNameGlob,
    PartNameExact, -> PartNameExact,partname,PartName,
    AnyPart,
    ClassGlobSpec,
    OneClassGlob, -> OneClassGlob,classglob,ClassGlob,
    ClassGlobSet, -> ClassGlobSet,globs,ClassGlob_Commalist,
    ClassName, -> ClassName,name,Name,
    PartName, -> PartName,name,Ident,
    Name, -> Name,first,Nonempty_Name,
    StrategyName, -> StrategyName,name,Ident,
    NodeSubsetName, -> NodeSubsetName,name,Ident,
    SymbolicNameMapI,
    StrategyDef_NPList, -> StrategyDef_NPList,first,Nonempty_StrategyDef_NPList,
    NodeSubsetSpec_PList, -> NodeSubsetSpec_PList,first,Nonempty_NodeSubsetSpec_PList,
    NodeSubsetExpression_List, -> NodeSubsetExpression_List,first,Nonempty_NodeSubsetExpression_List,
    ClassName_BCList, -> ClassName_BCList,first,Nonempty_ClassName_BCList,
    SGEdge_SList, -> SGEdge_SList,first,Nonempty_SGEdge_SList,
    PathSegment_List, -> PathSegment_List,first,Nonempty_PathSegment_List,
    Strategy_Commalist, -> Strategy_Commalist,first,Nonempty_Strategy_Commalist,
    NameBinding_Commalist, -> NameBinding_Commalist,first,Nonempty_NameBinding_Commalist,
    Glob_Commalist, -> Glob_Commalist,first,Nonempty_Glob_Commalist,
    ClassGlob_Commalist, -> ClassGlob_Commalist,first,Nonempty_ClassGlob_Commalist,
    Nonempty_Name, -> Nonempty_Name,it,Ident, -> Nonempty_Name,next,Nonempty_Name,
    Nonempty_StrategyDef_NPList, -> Nonempty_StrategyDef_NPList,it,StrategyDef, -> Nonempty_StrategyDef_NPList,next,Nonempty_StrategyDef_NPList,
    Nonempty_NodeSubsetSpec_PList, -> Nonempty_NodeSubsetSpec_PList,it,NodeSubsetSpec, -> Nonempty_NodeSubsetSpec_PList,next,Nonempty_NodeSubsetSpec_PList,
    Nonempty_NodeSubsetExpression_List, -> Nonempty_NodeSubsetExpression_List,it,NodeSubsetExpression, -> Nonempty_NodeSubsetExpression_List,next,Nonempty_NodeSubsetExpression_List,
    Nonempty_ClassName_BCList, -> Nonempty_ClassName_BCList,it,ClassName, -> Nonempty_ClassName_BCList,next,Nonempty_ClassName_BCList,
    Nonempty_SGEdge_SList, -> Nonempty_SGEdge_SList,it,SGEdge, -> Nonempty_SGEdge_SList,next,Nonempty_SGEdge_SList,
    Nonempty_PathSegment_List, -> Nonempty_PathSegment_List,it,PathSegment, -> Nonempty_PathSegment_List,next,Nonempty_PathSegment_List,
    Nonempty_Strategy_Commalist, -> Nonempty_Strategy_Commalist,it,Strategy, -> Nonempty_Strategy_Commalist,next,Nonempty_Strategy_Commalist,
    Nonempty_NameBinding_Commalist, -> Nonempty_NameBinding_Commalist,it,NameBinding, -> Nonempty_NameBinding_Commalist,next,Nonempty_NameBinding_Commalist,
    Nonempty_Glob_Commalist, -> Nonempty_Glob_Commalist,it,Glob, -> Nonempty_Glob_Commalist,next,Nonempty_Glob_Commalist,
    Nonempty_ClassGlob_Commalist, -> Nonempty_ClassGlob_Commalist,it,ClassGlob, -> Nonempty_ClassGlob_Commalist,next,Nonempty_ClassGlob_Commalist
  } {{ }}
  after { 
    Main,
    SelectorLanguage, -> SelectorLanguage,strategylanguage,StrategyLanguage, -> SelectorLanguage,nodesubsetlanguage,NodeSubsetLanguage, -> SelectorLanguage,selectorname,SelectorName, -> SelectorLanguage,classdict,ClassDict,
    SelectorName, -> SelectorName,ident,Ident,
    ClassDict, -> ClassDict,text,Text,
    StrategyLanguage, -> StrategyLanguage,strategydef_nplist,StrategyDef_NPList,
    StrategyDef, -> StrategyDef,strategyname,StrategyName, -> StrategyDef,strategyexpression,StrategyExpression,
    NodeSubsetLanguage, -> NodeSubsetLanguage,nodesubsetspec_plist,NodeSubsetSpec_PList,
    NodeSubsetSpec, -> NodeSubsetSpec,nodesubsetname,NodeSubsetName, -> NodeSubsetSpec,nodesubsetexpression,NodeSubsetExpression,
    NodeSubsetExpression,
    Simple,
    Compound, -> Compound,op,Operator, -> Compound,args,NodeSubsetExpression_List,
    Operator,
    Union,
    Intersection,
    Complement,
    ClassNameSet, -> ClassNameSet,classname_bclist,ClassName_BCList,
    GraphNodes, -> GraphNodes,strategyname,StrategyName,
    GraphNodeRegExp, -> GraphNodeRegExp,classname,ClassName, -> GraphNodeRegExp,wildcard,WildCard,
    WildCard,
    StrategyExpression, -> StrategyExpression,strategy,Strategy,
    Strategy,
    SimpleStrategy, -> SimpleStrategy,parsedNameMap,NameMap,
    StrategyGraph, -> StrategyGraph,edges,SGEdge_SList,
    SGEdge, -> SGEdge,sourcemarker,SourceMarker, -> SGEdge,source,GlobSpec, -> SGEdge,targetmarker,TargetMarker, -> SGEdge,target,GlobSpec, -> SGEdge,constraint,NegativeConstraint,
    SourceMarker,
    TargetMarker,
    PathDirective, -> PathDirective,source,SourceDirective, -> PathDirective,constraint,NegativeConstraint, -> PathDirective,segments,PathSegment_List, -> PathDirective,target,TargetDirective,
    SourceDirective, -> SourceDirective,sources,ClassGlobSpec,
    From,
    PathSegment, -> PathSegment,node,PositiveConstraint, -> PathSegment,constraint,NegativeConstraint,
    Constraint, -> Constraint,glob,GlobSpec,
    PositiveConstraint,
    Through,
    Via,
    NegativeConstraint,
    Bypassing,
    OnlyThrough,
    TargetDirective, -> TargetDirective,targets,ClassGlobSpec,
    To,
    ToStop,
    StrategyCombination, -> StrategyCombination,first,Strategy, -> StrategyCombination,rest,Strategy_Commalist,
    Join,
    Merge,
    Intersect,
    StrategyReference, -> StrategyReference,ident,Ident,
    SymbolicNameMap,
    NameMap, -> NameMap,bindings,NameBinding_Commalist,
    NameBinding, -> NameBinding,sgName,Name, -> NameBinding,cgNames,ClassGlobSpec,
    GlobSpec,
    OneGlob, -> OneGlob,glob,Glob,
    GlobSet, -> GlobSet,globs,Glob_Commalist,
    Glob,
    EdgeGlob,
    ClassGlob, -> ClassGlob,name,ClassNameGlob,
    PartGlob, -> PartGlob,source,SourceGlob, -> PartGlob,name,PartNameGlob, -> PartGlob,target,TargetGlob,
    SubclassGlob, -> SubclassGlob,source,SourceGlob, -> SubclassGlob,target,TargetGlob,
    SuperclassGlob, -> SuperclassGlob,source,SourceGlob, -> SuperclassGlob,target,TargetGlob,
    SourceGlob, -> SourceGlob,name,ClassNameGlob,
    TargetGlob, -> TargetGlob,name,ClassNameGlob,
    ClassNameGlob,
    ClassNameExact, -> ClassNameExact,classname,ClassName,
    AnyClass,
    PartNameGlob,
    PartNameExact, -> PartNameExact,partname,PartName,
    AnyPart,
    ClassGlobSpec,
    OneClassGlob, -> OneClassGlob,classglob,ClassGlob,
    ClassGlobSet, -> ClassGlobSet,globs,ClassGlob_Commalist,
    ClassName, -> ClassName,name,Name,
    PartName, -> PartName,name,Ident,
    Name, -> Name,first,Nonempty_Name,
    StrategyName, -> StrategyName,name,Ident,
    NodeSubsetName, -> NodeSubsetName,name,Ident,
    SymbolicNameMapI,
    StrategyDef_NPList, -> StrategyDef_NPList,first,Nonempty_StrategyDef_NPList,
    NodeSubsetSpec_PList, -> NodeSubsetSpec_PList,first,Nonempty_NodeSubsetSpec_PList,
    NodeSubsetExpression_List, -> NodeSubsetExpression_List,first,Nonempty_NodeSubsetExpression_List,
    ClassName_BCList, -> ClassName_BCList,first,Nonempty_ClassName_BCList,
    SGEdge_SList, -> SGEdge_SList,first,Nonempty_SGEdge_SList,
    PathSegment_List, -> PathSegment_List,first,Nonempty_PathSegment_List,
    Strategy_Commalist, -> Strategy_Commalist,first,Nonempty_Strategy_Commalist,
    NameBinding_Commalist, -> NameBinding_Commalist,first,Nonempty_NameBinding_Commalist,
    Glob_Commalist, -> Glob_Commalist,first,Nonempty_Glob_Commalist,
    ClassGlob_Commalist, -> ClassGlob_Commalist,first,Nonempty_ClassGlob_Commalist,
    Nonempty_Name, -> Nonempty_Name,it,Ident, -> Nonempty_Name,next,Nonempty_Name,
    Nonempty_StrategyDef_NPList, -> Nonempty_StrategyDef_NPList,it,StrategyDef, -> Nonempty_StrategyDef_NPList,next,Nonempty_StrategyDef_NPList,
    Nonempty_NodeSubsetSpec_PList, -> Nonempty_NodeSubsetSpec_PList,it,NodeSubsetSpec, -> Nonempty_NodeSubsetSpec_PList,next,Nonempty_NodeSubsetSpec_PList,
    Nonempty_NodeSubsetExpression_List, -> Nonempty_NodeSubsetExpression_List,it,NodeSubsetExpression, -> Nonempty_NodeSubsetExpression_List,next,Nonempty_NodeSubsetExpression_List,
    Nonempty_ClassName_BCList, -> Nonempty_ClassName_BCList,it,ClassName, -> Nonempty_ClassName_BCList,next,Nonempty_ClassName_BCList,
    Nonempty_SGEdge_SList, -> Nonempty_SGEdge_SList,it,SGEdge, -> Nonempty_SGEdge_SList,next,Nonempty_SGEdge_SList,
    Nonempty_PathSegment_List, -> Nonempty_PathSegment_List,it,PathSegment, -> Nonempty_PathSegment_List,next,Nonempty_PathSegment_List,
    Nonempty_Strategy_Commalist, -> Nonempty_Strategy_Commalist,it,Strategy, -> Nonempty_Strategy_Commalist,next,Nonempty_Strategy_Commalist,
    Nonempty_NameBinding_Commalist, -> Nonempty_NameBinding_Commalist,it,NameBinding, -> Nonempty_NameBinding_Commalist,next,Nonempty_NameBinding_Commalist,
    Nonempty_Glob_Commalist, -> Nonempty_Glob_Commalist,it,Glob, -> Nonempty_Glob_Commalist,next,Nonempty_Glob_Commalist,
    Nonempty_ClassGlob_Commalist, -> Nonempty_ClassGlob_Commalist,it,ClassGlob, -> Nonempty_ClassGlob_Commalist,next,Nonempty_ClassGlob_Commalist
  } {{ }}
  finish {{ }}
}