anchor.diff:            { $expressionList.addExpression($e2.expression);
               $expressionList.setEndToken(null); }
           | { displayRecognitionError(getTokenNames(), 
  -              new MismatchedTokenException(RBRACE, input)); } //TODO: sometimes it should be RPAREN!
  +              new MismatchedTokenException(LIDENTIFIER, input)); } //TODO: sometimes it should be RPAREN!
           )
         )*
       ;
  
positive.code:       { if ($ta1.type!=null)
              $typeArgumentList.addType($ta1.type); }
        (
          c=COMMA 
          { $typeArgumentList.setEndToken($c); }
          (
            ta2=typeArgument
            { $typeArgumentList.addType($ta2.type); 
              $typeArgumentList.setEndToken(null); }
            | { displayRecognitionError(getTokenNames(), 
                  new MismatchedTokenException(LARGER_OP, input)); }
          )
        )* 
        LARGER_OP
  
negative.code:           { $typeParameterList.addTypeParameterDeclaration($tp2.typeParameter); 
              $typeParameterList.setEndToken(null); }
          | { displayRecognitionError(getTokenNames(), 
                  new MismatchedTokenException(UIDENTIFIER, input)); }
          )
        )*
        LARGER_OP
  