class RecordScanner extends ConsistencyCheckerTask {

    @Override
    public void run()
    {
        statistics.reset();
        if ( warmUpStores != null )
        {
            for ( IterableStore store : warmUpStores )
            {
                store.warmUpCache();
            }
        }
        try
        {
            scan();
        }
        finally
        {
            try
            {
                store.close();
            }
            catch ( Exception e )
            {
                progress.failed( e );
                throw new RuntimeException( e );
            }
            finally
            {
                processor.close();
                progress.done();
            }
        }
        statistics.print( name );
    }

      RecordScanner( String name, Statistics statistics, int threads, BoundedIterable<RECORD> store,
            ProgressMonitorFactory.MultiPartBuilder builder, RecordProcessor<RECORD> processor,
            IterableStore... warmUpStores );

}