private async Task <IEnumerable <CompositeContinuationToken> > BuildCompositeTokensAsync(string initialContinuationToken)
        {
            if (string.IsNullOrEmpty(initialContinuationToken))
            {
                // Initialize composite token with all the ranges
                IReadOnlyList <Documents.PartitionKeyRange> allRanges = await this.pkRangeCacheDelegate(
                    this.containerRid,
                    new Documents.Routing.Range <string>(
                        Documents.Routing.PartitionKeyInternal.MinimumInclusiveEffectivePartitionKey,
                        Documents.Routing.PartitionKeyInternal.MaximumExclusiveEffectivePartitionKey,
                        isMinInclusive: true,
                        isMaxInclusive: false),
                    false);

                Debug.Assert(allRanges.Count != 0);
                // Initial state for a scenario where user does not provide any initial continuation token.
                // StartTime and StartFromBeginning can handle the logic if the user wants to start reading from any particular point in time
                // After the first iteration, token will be updated with a recent value
                return(allRanges.Select(e => StandByFeedContinuationToken.CreateCompositeContinuationTokenForRange(e.MinInclusive, e.MaxExclusive, null)));
            }

            try
            {
                return(StandByFeedContinuationToken.DeserializeTokens(initialContinuationToken));
            }
            catch (JsonReaderException ex)
            {
                throw new ArgumentOutOfRangeException($"Provided token has an invalid format: {initialContinuationToken}", ex);
            }
        }