protected override void OnCompile()
        {
            if (SyntaxNode.GroupByClause == null)
            {
                Select = SyntaxNode.CreateSelector <TSource, TResult>();
            }
            else
            {
                GroupBySelect = SyntaxNode.CreateGroupBySelector <TSource, TResult>();
            }

            if (SyntaxNode.WhereClause != null)
            {
                Where = SyntaxNode.WhereClause.CreateEvaluator <TSource>();
            }

            if (SyntaxNode.OrderByClause != null)
            {
                OrderBy = SyntaxNode.OrderByClause.CreateFunction <TSource>();
            }

            if (SyntaxNode.HavingClause != null)
            {
                Having = SyntaxNode.HavingClause.CreateEvaluator <TResult>();
            }
        }