protected override Expression VisitIntersect(IntersectExpression intersectExpression)
        {
            Check.NotNull(intersectExpression, nameof(intersectExpression));

            var canOptimize = _canOptimize;

            _canOptimize = false;
            var source1 = (SelectExpression)Visit(intersectExpression.Source1);
            var source2 = (SelectExpression)Visit(intersectExpression.Source2);

            _canOptimize = canOptimize;

            return(intersectExpression.Update(source1, source2));
        }
 protected override Expression VisitIntersect(IntersectExpression x)
 {
     return(x?.Update(x.Source1.VisitNode(this), x.Source2.VisitNode(this)));
 }