/// <summary>
        ///     Determines all query sources that require materialization.
        /// </summary>
        /// <param name="queryModelVisitor"> The query model visitor. </param>
        /// <param name="queryModel"> The query model. </param>
        public virtual void FindQuerySourcesRequiringMaterialization(
            [NotNull] EntityQueryModelVisitor queryModelVisitor, [NotNull] QueryModel queryModel)
        {
            Check.NotNull(queryModelVisitor, nameof(queryModelVisitor));
            Check.NotNull(queryModel, nameof(queryModel));

            var querySourcesRequiringMaterializationFinder = new QuerySourcesRequiringMaterializationFinder(
                _requiresMaterializationExpressionVisitorFactory,
                queryModelVisitor,
                QuerySourcesRequiringMaterialization);

            querySourcesRequiringMaterializationFinder.AddQuerySourcesRequiringMaterialization(queryModel);
        }
 public SetResultOperatorsCompensatingVisitor(
     QuerySourcesRequiringMaterializationFinder querySourcesRequiringMaterializationFinder)
 {
     _querySourcesRequiringMaterializationFinder = querySourcesRequiringMaterializationFinder;
 }
 public ComplexJoinKeyCompensatingVisitor(QuerySourcesRequiringMaterializationFinder querySourcesRequiringMaterializationFinder)
 {
     _querySourcesRequiringMaterializationFinder = querySourcesRequiringMaterializationFinder;
 }