anchor.diff:     ;
   
   block
  -   : '(' ((optionsSpec)? ':')? alternative rewrite ('|' alternative rewrite)* ')'
  +   : '(' ((optionsSpec)? ':')? alternative rewrite? ('|' alternative rewrite?)* ')'
      ;
   
   altList
  
positive.code:    ;
  
  rule_
     : DOC_COMMENT? (('protected' | 'public' | 'private' | 'fragment'))? id '!'? (ARG_ACTION)? ('returns' ARG_ACTION)? throwsSpec? optionsSpec? ruleScopeSpec? ruleAction* ':' altList ';' exceptionGroup?
     ;
  
  ruleAction
  
negative.code:    ;
  
  terminal_
     : (CHAR_LITERAL | TOKEN_REF (ARG_ACTION?) | STRING_LITERAL | '.') ('^' | '!')?
     ;
  
  notTerminal
  