anchor.diff:  	:	dimExpr dimExpr*
   	;
   
  -dimExpr
  -	:	annotation* '[' expression ']'
  +dimExpr returns [Expression e]
  +    locals [List<Modifier> mods = new ArrayList<>();]
  +	:	(a = annotation {$mods.add($a);})*
  +        '[' ex = expression ']'
   	;
   
   constantExpression returns [Expression e]
  
positive.code: 		|	(pno = primaryNoNewArray_lfno_arrayAccess '[' i = expression ']'
                  {$e = new ArrayAccessExpression($pno, $i);})
  		)
  		(	p = primaryNoNewArray_lf_arrayAccess '[' i = expression ']'
  		)*
  	;
  
  
negative.code:  * Productions from §15 (Expressions)
   */
  
  primary returns [Expression e]
  	:	(	pno = primaryNoNewArray_lfno_primary
  		|	a = arrayCreationExpression
  		)
  		(	p = primaryNoNewArray_lf_primary
  		)*
  	;
  
  