protected override Provider VisitInclude(IncludeProvider provider)
        {
            OnRecursionEntrance(provider);
            var source = VisitCompilable(provider.Source);

            OnRecursionExit(provider);
            if (source == provider.Source)
            {
                return(provider);
            }
            return(new IncludeProvider(source, provider.Algorithm, provider.IsInlined,
                                       provider.FilterDataSource, provider.ResultColumnName, provider.FilteredColumns));
        }
 /// <summary>
 /// Visits the <see cref="IncludeProvider"/>.
 /// </summary>
 /// <param name="provider">Include provider.</param>
 /// <returns></returns>
 protected abstract Provider VisitInclude(IncludeProvider provider);