anchor.diff:        final futures = <Future>[];
   
         await for (final package in dbService.query<Package>().run()) {
  -        futures.add(pool.withResource(() => _processPackage(package.name)));
  +        futures.add(
  +            pool.withResource(() => _processPackage(package.name, dryRun)));
         }
   
         await Future.wait(futures);
         await pool.close();
       } else {
  -      await _processPackage(package);
  +      await _processPackage(package, dryRun);
       }
     });
   }
   
  -Future<void> _processPackage(String package) async {
  +Future<void> _processPackage(String package, bool dryRun) async {
     await _deleteWithQuery<PackageVersionInfo>(
       dbService.query<PackageVersionInfo>()..filter('package =', package),
       where: (p) => p.id.toString() == p.qualifiedVersionKey.oldQualifiedVersion,
  +    dryRun: dryRun,
     );
   }
   
  -Future _deleteWithQuery<T>(Query query, {bool Function(T item) where}) async {
  +Future<void> _deleteWithQuery<T>(Query query,
  +    {bool Function(T item) where, bool dryRun}) async {
  +  print('Running query for $T...');
     final deletes = <Key>[];
     await for (Model m in query.run()) {
       final shouldDelete = where == null || where(m as T);
       if (shouldDelete) {
         deletes.add(m.key);
         if (deletes.length >= 500) {
  -        await dbService.commit(deletes: deletes);
           deletes.clear();
  +        await _commit(deletes, dryRun);
         }
       }
     }
     if (deletes.isNotEmpty) {
  +    await _commit(deletes, dryRun);
  +  }
  +}
  +
  +Future<void> _commit(List<Key> deletes, bool dryRun) async {
  +  if (dryRun) {
  +    for (final key in deletes) {
  +      print('Deleting: ${key.type} ${key.id}');
  +    }
  +  } else {
       await dbService.commit(deletes: deletes);
     }
   }
  
positive.code:   ..addOption('concurrency',
        abbr: 'c', defaultsTo: '1', help: 'Number of concurrent processing.')
    ..addOption('package', abbr: 'p', help: 'The package to process.')
    ..addFlag('help', abbr: 'h', defaultsTo: false, help: 'Show help.');
  
  /// Deletes PackageVersionPubspec and PackageVersionInfo using old IDs, see CHANGELOG.md
  
negative.code: 
    final concurrency = int.parse(argv['concurrency'] as String);
    final package = argv['package'] as String;
    final dryRun = argv['dry-run'] as bool;
  
    await withToolRuntime(() async {
      if (package == null) {
  