anchor.diff:  	;
   
   prequelConstructs returns [GrammarAST firstOne=null]
  +@init {
  +	enterPrequelConstructs($start);
  +}
  +@after {
  +	exitPrequelConstructs($start);
  +}
   	:	{$firstOne=$start;} prequelConstruct+
   	|
   	;
   
   prequelConstruct
  +@init {
  +	enterPrequelConstructs($start);
  +}
  +@after {
  +	exitPrequelConstructs($start);
  +}
   	:   optionsSpec
       |   delegateGrammars
       |   tokensSpec
  
positive.code:     ;
  
  lexerRuleBlock
      :	^(	BLOCK
      		(	{
      			currentOuterAltRoot = (GrammarAST)input.LT(1);
  
negative.code: 
  rule
  @init {
  	enterRule($start);
  	List<GrammarAST> mods = new ArrayList<GrammarAST>();
  	List<GrammarAST> actions = new ArrayList<GrammarAST>(); // track roots
  	currentOuterAltNumber=0;
  }
  @after {
  	exitRule($start);
  }
  	:   ^(	RULE RULE_REF {currentRuleName=$RULE_REF.text; currentRuleAST=$RULE;}
  			DOC_COMMENT? (^(RULEMODIFIERS (m=ruleModifier{mods.add($m.start);})+))?
  