Expression ret;
String name;
List typeArgs = null;
List args = null;
boolean hasArgs = false;
Type type;
int line;
int column;
switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
case FALSE:
case NULL:
case TRUE:
case LONG_LITERAL:
case INTEGER_LITERAL:
case FLOATING_POINT_LITERAL:
case CHARACTER_LITERAL:
case STRING_LITERAL:
ret = Literal();
break;
case THIS:
jj_consume_token(THIS);
ret = new ThisExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn, null);
break;
case SUPER:
jj_consume_token(SUPER);
ret = new SuperExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn, null);
jj_consume_token(DOT);
switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
case LT:
typeArgs = TypeArguments();
typeArgs.remove(0);
break;
default:
jj_la1[83] = jj_gen;
;
}
jj_consume_token(IDENTIFIER);
name = token.image;
switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
case LPAREN:
args = Arguments();
hasArgs = true;
break;
default:
jj_la1[84] = jj_gen;
;
}
ret = hasArgs ? new MethodCallExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, typeArgs, name, args) : new FieldAccessExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, null, name);
break;
case LPAREN:
jj_consume_token(LPAREN);
line = token.beginLine;
column = token.beginColumn;
ret = Expression();
jj_consume_token(RPAREN);
ret = new EnclosedExpr(line, column, token.endLine, token.endColumn, ret);
break;
case NEW:
ret = AllocationExpression(null);
break;
default:
jj_la1[86] = jj_gen;
if (jj_2_27(2147483647)) {
type = ResultType();
jj_consume_token(DOT);
jj_consume_token(CLASS);
ret = new ClassExpr(type.getBeginLine(), type.getBeginColumn(), token.endLine, token.endColumn, type);
} else {
switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
case IDENTIFIER:
jj_consume_token(IDENTIFIER);
name = token.image;