/// <summary>
        /// Creates a stream of items that are candidates for publishing
        /// </summary>
        protected override ISourceObservable <CandidateValidationContext> CreatePublishSourceStream(DateTime started, PublishOptions options, IPublishCandidateSource publishSourceRepository, IPublishValidator validator, IPublisherOperationService publisherOperationService, CancellationTokenSource errorSource)
        {
            UnpublishedNodeSourceProducer unsp = new UnpublishedNodeSourceProducer(
                started,
                options.Languages,
                options.Targets,
                (IEnumerable <string>) new string[1] {
                PublishOptionsMetadataExtensions.GetPublishType(options)
            },
                publishSourceRepository,
                publisherOperationService,
                validator,
                this._options.UnpublishedOperationsLoadingBatchSize,
                errorSource,
                errorSource.Token,
                (ILogger)LoggerFactoryExtensions.CreateLogger <UnpublishedNodeSourceProducer>(this._loggerFactory));

            DeletedNodesSourceProducer dnsp = new DeletedNodesSourceProducer(
                (ISourceObservable <CandidateValidationContext>)unsp,
                started,
                options.Languages,
                options.Targets,
                (IEnumerable <string>) new string[1] {
                PublishOptionsMetadataExtensions.GetPublishType(options)
            },
                publisherOperationService,
                this._options.UnpublishedOperationsLoadingBatchSize,
                errorSource,
                (ILogger)LoggerFactoryExtensions.CreateLogger <UnpublishedNodeSourceProducer>(this._loggerFactory),
                null);

            return((ISourceObservable <CandidateValidationContext>)dnsp);
        }
        /// <summary>
        /// Creates a stream of items that are candidates for publishing
        /// </summary>
        protected override ISourceObservable<CandidateValidationContext> CreatePublishSourceStream(DateTime started, PublishOptions options, IPublishCandidateSource publishSourceRepository, IPublishValidator validator, IPublisherOperationService publisherOperationService, CancellationTokenSource errorSource)
        {
            UnpublishedNodeSourceProducer unsp = new UnpublishedNodeSourceProducer(
                started,
                options.Languages,
                options.Targets,
                (IEnumerable<string>)new string[1] { PublishOptionsMetadataExtensions.GetPublishType(options) },
                publishSourceRepository,
                publisherOperationService,
                validator,
                this._options.UnpublishedOperationsLoadingBatchSize,
                errorSource,
                errorSource.Token,
                (ILogger)LoggerFactoryExtensions.CreateLogger<UnpublishedNodeSourceProducer>(this._loggerFactory));

            DeletedNodesSourceProducer dnsp = new DeletedNodesSourceProducer(
                (ISourceObservable<CandidateValidationContext>)unsp,
                started,
                options.Languages,
                options.Targets,
                (IEnumerable<string>)new string[1] { PublishOptionsMetadataExtensions.GetPublishType(options) },
                publisherOperationService,
                this._options.UnpublishedOperationsLoadingBatchSize,
                errorSource,
                (ILogger)LoggerFactoryExtensions.CreateLogger<UnpublishedNodeSourceProducer>(this._loggerFactory),
                null);

            return (ISourceObservable<CandidateValidationContext>)dnsp;
        }