public Expression member_reference_expression(Expression target)
{
Expression expression = null;
IToken token = null;
expression = target;
try
{
int num = this.LA(1);
if (num == 0x5b)
{
TypeReferenceCollection references;
token = this.LT(1);
this.match(0x5b);
if (base.inputState.guessing == 0)
{
GenericReferenceExpression expression2;
GenericReferenceExpression expression3;
GenericReferenceExpression expression1 = expression2 = new GenericReferenceExpression(ToLexicalInfo(token));
expression2.set_Target(expression);
expression = expression3 = expression2;
references = expression3.get_GenericArguments();
}
this.type_reference_list(references);
this.match(0x5f);
return expression;
}
if (((num != 12) && (num != 20)) && ((num != 0x25) && (num != 0x3b)))
{
throw new NoViableAltException(this.LT(1), this.getFilename());
}
Token token2 = this.member();
if (base.inputState.guessing == 0)
{
MemberReferenceExpression expression4;
MemberReferenceExpression expression7 = expression4 = new MemberReferenceExpression(ToLexicalInfo(token2));
expression4.set_Target(expression);
expression4.set_Name(token2.getText());
expression = expression4;
}
return expression;
}
catch (RecognitionException exception)
{
if (base.inputState.guessing != 0)
{
throw;
}
this.reportError(exception);
this.recover(exception, tokenSet_20_);
return expression;
}
return expression;
}