public Expression new_expression()
{
Expression expression = null;
try
{
ExpressionCollection expressions;
bool flag = false;
if ((this.LA(1) == 0x1b) && (this.LA(2) == 0x3b))
{
int num = this.mark();
flag = true;
base.inputState.guessing++;
try
{
this.new_array_expression();
}
catch (RecognitionException)
{
flag = false;
}
this.rewind(num);
base.inputState.guessing--;
}
if (flag)
{
return this.new_array_expression();
}
if ((this.LA(1) != 0x1b) || ((this.LA(2) != 12) && (this.LA(2) != 0x3b)))
{
throw new NoViableAltException(this.LT(1), this.getFilename());
}
this.match(0x1b);
Expression expression2 = this.reference_expression();
if (base.inputState.guessing == 0)
{
MethodInvocationExpression expression3;
MethodInvocationExpression expression4;
MethodInvocationExpression expression1 = expression3 = new MethodInvocationExpression(expression2.get_LexicalInfo());
expression3.set_Target(expression2);
expression = expression4 = expression3;
expressions = expression4.get_Arguments();
}
this.match(0x3f);
this.expression_list(expressions);
this.match(0x40);
return expression;
}
catch (RecognitionException exception2)
{
if (base.inputState.guessing != 0)
{
throw;
}
this.reportError(exception2);
this.recover(exception2, tokenSet_20_);
return expression;
}
return expression;
}