protected virtual Try<Expression> TryParseMemberAccess(Type type, Expression instance, TokenId nextToken, int errorPos, string name)
{
if (nextToken == TokenId.OpenParen)
{
return GenerateMethodCall(type, instance, errorPos, name, Lazy.Create(ParseArgumentList))
.ToTry(() => ParseError(errorPos, Res.NoApplicableMethod(name, GetTypeName(type))));
}
return GenerateMemberAccess(type, instance, errorPos, name)
.OrElse(() => GenerateMethodCall(type, instance, errorPos, name, Lazy.Create(() => new Expression[0])))
.OrElse(() => GenerateNullableMethodCall(type, instance, errorPos, name, nextToken))
.ToTry(() => ParseError(errorPos, Res.UnknownPropertyOrField(name, GetTypeName(type))));
}