private async Task <SourceFilter> CreateIterativeFilterAsync(IterativeTransitOptions iterOpts, CancellationToken token) { var(checkpointField, offset, forcedCheckpoint) = iterOpts; if (forcedCheckpoint != null) { _logger.Information("Forced to use checkpoint {ForcedCheckpoint} for collection {Collection}", iterOpts.ForcedCheckpoint, _collectionName); return(new SourceFilter(checkpointField, iterOpts.ForcedCheckpoint)); } _logger.Debug("Fetching last checkpoint for collection {Collection}", _collectionName); var lastCheckpoint = await _destination.FindLastCheckpointAsync(checkpointField, token); if (lastCheckpoint != null) { #pragma warning disable CS8620 lastCheckpoint -= offset; #pragma warning restore CS8620 _logger.Debug("Collection {Collection} will be transferred from checkpoint {LastCheckpoint}", _collectionName, lastCheckpoint); } else { _logger.Warning("Collection {Collection} doesn't have checkpoint", _collectionName); } return(new SourceFilter(checkpointField, lastCheckpoint)); }