/// <summary>
        /// Defines a list of Page Transformation Tasks
        /// </summary>
        /// <param name="sourceProvider">The source provider</param>
        /// <param name="targetContext">The target context</param>
        /// <param name="token">The cancellation token, if any</param>
        /// <returns>A list of PageTransformationTask to transform</returns>
        public async IAsyncEnumerable <PageTransformationTask> GetPageTransformationTasksAsync(
            ISourceProvider sourceProvider,
            PnPContext targetContext,
            [EnumeratorCancellation] CancellationToken token = default)
        {
            if (sourceProvider == null)
            {
                throw new ArgumentNullException(nameof(sourceProvider));
            }
            if (targetContext == null)
            {
                throw new ArgumentNullException(nameof(targetContext));
            }

            await foreach (var sourceItemId in sourceProvider.GetItemsIdsAsync(token).WithCancellation(token))
            {
                yield return(new PageTransformationTask(sourceProvider, sourceItemId, targetContext));
            }
        }