anchor.diff:      |   classDeclaration
       |   enumDeclaration
       ;
  -    
  +
   /* We use rule this even for void methods which cannot have [] after parameters.
      This simplifies grammar and we can consider void to be a type, which
      renders the [] matching as a context-sensitive issue or a semantic check
  
positive.code: statementExpression
      :   expression
      ;
      
  constantExpression
      :   expression
      ;
      
  expression
  	:   primary
      |   expression '.' Identifier
      |   expression '.' 'this'
      |   expression '.' 'new' nonWildcardTypeArguments? innerCreator
      |   expression '.' 'super' superSuffix
      |	expression '.' explicitGenericInvocation
      |   expression '[' expression ']'
      |   expression '(' expressionList? ')'
      |   'new' creator
  
negative.code: classCreatorRest
      :   arguments classBody?
      ;
  
  explicitGenericInvocation
      :   nonWildcardTypeArguments explicitGenericInvocationSuffix
      ;
  
  nonWildcardTypeArguments
      :   '<' typeList '>'
      ;
  
  typeArgumentsOrDiamond
      :   '<' '>'
      |   typeArguments
      ;
  
  nonWildcardTypeArgumentsOrDiamond
      :   '<' '>'
      |   nonWildcardTypeArguments
      ;
  
  superSuffix
      :   arguments
  