anchor.diff:        ..addOption('packages-list',
             help: 'The input file with the list of packages.')
         ..addOption('output',
  -          help: 'The output directory to store the per-package results.');
  +          help: 'The output directory to store the per-package results.')
  +      ..addFlag('force',
  +          help:
  +              'Re-do analysis for packages where the output file already exists.');
     }
   
     @override
     Future run() async {
       final concurrency = int.parse(argResults['concurrency'] as String ?? '1');
       final pool = new Pool(concurrency);
  +    final bool force = argResults['force'];
   
       final packages = new Set<String>();
       packages.addAll(argResults.rest);
  
positive.code:       final analyzer = new PackageAnalyzer(toolEnv);
        final futures = <Future>[];
        for (final package in packages) {
          final f = pool.withResource(() async {
            print('Analyzing $package...');
            try {
  
negative.code:               package,
                options: new InspectOptions(verbosity: Verbosity.compact),
              );
              await outputFile
                  .writeAsString(_jsonEncoder.convert(summary.toJson()));
            } catch (e, st) {
  