anchor.diff:          )?
           RCURLY!
       ;
  -*OBS*/
   
   // The two things that can initialize an annotation array element are a conditional expression
   // and an annotation (nested annotation array initialisers are not valid)
  
positive.code: // the basic element of an expression
  primaryExpression {Token first = LT(1);}
      :   IDENT
          /*OBS*  //keywords can follow dot in Groovy; no need for this special case
          ( options {greedy=true;} : DOT^ "class" )?
          *OBS*/
      |   constant
      |   newExpression
      |   "this"
  
negative.code:     :   conditionalExpression[0]
      |   annotation nls!
      ;
  *OBS*/
  
  superClassClause!
      {Token first = LT(1);}
  