anchor.diff:  // for details. All rights reserved. Use of this source code is governed by a
   // BSD-style license that can be found in the LICENSE file.
   
  -import 'dart:async';
   import 'dart:io';
   
   import 'package:args/args.dart';
  
positive.code:     print('  package-root: ${env.pkgRoot}');
    }
  
    parseCoverage(files, env.workers).then((hitmap) {
      // All workers are done. Process the data.
      if (env.verbose) {
        final end = new DateTime.now().millisecondsSinceEpoch;
        print('Done creating a global hitmap. Took ${end - start} ms.');
      }
  
      Future out;
      var resolver = new Resolver(packageRoot: env.pkgRoot, sdkRoot: env.sdkRoot);
      var loader = new Loader();
      if (env.prettyPrint) {
        out = new PrettyPrintFormatter(resolver, loader).format(hitmap);
      } else if (env.lcov) {
        out = new LcovFormatter(resolver).format(hitmap);
      }
  
      out.then((output) {
        env.output.write(output);
        env.output.close().then((_) {
          if (env.verbose) {
            final end = new DateTime.now().millisecondsSinceEpoch;
            print('Done flushing output. Took ${end - start} ms.');
          }
        });
  
        if (env.verbose) {
          if (resolver.failed.length > 0) {
            print('Failed to resolve:');
            resolver.failed.toSet().forEach((e) => print('  ${e}'));
          }
          if (loader.failed.length > 0) {
            print('Failed to load:');
            loader.failed.toSet().forEach((e) => print('  ${e}'));
          }
        }
      });
    });
  }
  
  /// Checks the validity of the provided arguments. Does not initialize actual
  
negative.code:   bool verbose;
  }
  
  main(List<String> arguments) async {
    final env = parseArgs(arguments);
  
    List files = filesToProcess(env.input);
  