anchor.diff:  @after {
   	GrammarTransformPipeline.setGrammarPtr(g, $tree);
   }
  -	:	{!rewriteElems.contains($start.getText())}?
  -		(	a=STRING_LITERAL {!inLexer || CharSupport.getCharValueFromGrammarCharLiteral($a.getText())!=-1}?
  +	:	(	a=STRING_LITERAL {!inLexer || CharSupport.getCharValueFromGrammarCharLiteral($a.getText())!=-1}?
   		|	{!inLexer}?=> TOKEN_REF
   		|	{inLexer}?=>  ^(RANGE a=STRING_LITERAL b=STRING_LITERAL)
   			{CharSupport.getCharValueFromGrammarCharLiteral($a.getText())!=-1 &&
  
positive.code: @members {
  public String currentRuleName;
  public GrammarAST currentAlt;
  public Set<String> rewriteElems = new HashSet<String>();
  public Grammar g;
  public BlockSetTransformer(TreeNodeStream input, Grammar g) {
      this(input, new RecognizerSharedState());
  
negative.code: 
  setAlt
  	:	{inContext("RULE BLOCK")}?
  		ALT {currentAlt = $start;}
  	;
  
  // (BLOCK (ALT (+ (BLOCK (ALT INT) (ALT ID)))))
  