public void Scan(IDataReader dataReader, IProgressReporter progressReporter)
        {
            ProgressReporterSummer progressReporterSummer    = new ProgressReporterSummer(progressReporter);
            IProgressReporter      containerProgressReporter = progressReporterSummer.AddProgressReporter(ContainerDetectors.Count());

            _codecProgressReporter = progressReporterSummer.AddProgressReporter(CodecDetectors.Count());

            LastDataBlock = null;

            try
            {
                using (_dataReaderPool)
                {
                    _containerDataScanner.Scan(dataReader, containerProgressReporter);
                }
            }
            finally
            {
                LastDataBlock = null;
            }
        }
 /// <summary>
 /// Creates a new <see cref="PartialProgressReporter"/> that reports
 /// to the given <paramref name="progressReporterSummer"/>
 /// </summary>
 /// <param name="progressReporterSummer">The summer to report to</param>
 internal PartialProgressReporter(ProgressReporterSummer progressReporterSummer)
 {
     _progressReporterSummer = progressReporterSummer;
     _currentPercentProgress = -1;
 }