public MethodCallExpressionCompiler(ICompiler compiler, MethodCallExpression methodCallExpression, IList<InnerExpressionProcessingListItem> list)
        {
            var itemIndex = list == null ? 0 : list.IndexOf(list.First(x => x.AstNode == methodCallExpression));

            _compiler = compiler;
            _methodCallExpression = methodCallExpression;

            if (itemIndex > 0)
            {
                _previousExpression = list[itemIndex - 1].AstNode;
            }
        }
        public MethodCallExpression ParseExpressionMethodCall()
        {
            var methodCallExpression = new MethodCallExpression();

            methodCallExpression.MethodIdentifier = CurrentInputElement;
            MoveToNextToken();

            Debug.Assert(CurrentInputElement.Data == "(");
            MoveToNextToken();

            while (CurrentInputElement.Data != ")")
            {
                methodCallExpression.Parameters.Add(ParseExpressionParameter());
            }

            Debug.Assert(CurrentInputElement.Data == ")");
            MoveToNextToken();

            return methodCallExpression;
        }