public void Apply()
        {
            var sourceQueryModel = _nodeWithElementSelector.Source.Apply(QueryModel, ClauseGenerationContext);

            Assert.That(sourceQueryModel, Is.SameAs(QueryModel));

            var result = _nodeWithElementSelector.Apply(sourceQueryModel, ClauseGenerationContext);

            Assert.That(result, Is.Not.SameAs(QueryModel));

            var expectedFromExpression = new SubQueryExpression(sourceQueryModel);

            ExpressionTreeComparer.CheckAreEqualTrees(expectedFromExpression, result.MainFromClause.FromExpression);

            var expectedSelectClause =
                ExpressionHelper.Resolve <IGrouping <short, string>, Tuple <short, int> > (result.MainFromClause, g => Tuple.Create(g.Key, g.Count()));

            ExpressionTreeComparer.CheckAreEqualTrees(expectedSelectClause, result.SelectClause.Selector);

            Assert.That(result.ResultTypeOverride, Is.EqualTo(typeof(IEnumerable <Tuple <short, int> >)));
        }