public IAstNode ParseExpression()
        {
            if (CurrentInputElement.Data == "(" &&
                ForwardInputElement(2).Data != ")")
            {
                return ParseExpressionBracketed();
            }

            if (CurrentInputElement.Data == "(" &&
                ForwardInputElement(2).Data == ")")
            {
                return ParseExpressionTypeCast();
            }

            if (CurrentInputElement.Data == Keywords.New)
            {
                return ParserHelper.Parse<ClassInstantiationExpressionParser>(DataSource);
            }

            if (
                (CurrentInputElement is IdentifierToken || CurrentInputElement.Data == Keywords.Super || CurrentInputElement.Data == Keywords.This) &&
                ForwardInputElement(1).Data == "(")
            {
                return ParseExpressionMethodCall();
            }

            var identifier = new IdentifierExpression(CurrentInputElement);
            MoveToNextToken();

            return identifier;
        }
 public IdentifierExpressionCompiler(ICompiler compiler, IdentifierExpression identifierExpression, IList<InnerExpressionProcessingListItem> list)
 {
     _list = list;
     _compiler = compiler;
     _identifierExpression = identifierExpression;
 }