anchor.diff:  
   void _analyzerParserConfig(ArgParser parser) {
     parser
  -    ..addFlag(_enableTypeChecksArgName, help: 'Generate runtime type checks', defaultsTo: false)
  -    ..addFlag(_verboseArgName, help: 'verbose output of all errors', defaultsTo: false);
  +    ..addFlag(_enableTypeChecksArgName, abbr: 't', defaultsTo: false,
  +        help: 'Generate runtime type checks')
  +    ..addFlag(_verboseArgName, abbr: 'v', defaultsTo: false,
  +        help: 'verbose output of all errors')
  +    ..addFlag(_formatMachineArgName, abbr: 'm', defaultsTo: false,
  +        help: 'Print errors in a format suitable for parsing');
   }
   
   Future<bool> _processAnalyzerFile(TaskContext context, List<Path> analyzerFilePaths,
  -    bool enableTypeChecks, bool verbose) {
  +    bool enableTypeChecks, bool verbose, bool formatMachine) {
   
     int errorsCount = 0;
     int passedCount = 0;
  
positive.code: }
  
  Future<int> _analyzer(TaskLogger logger, Path filePath, bool enableTypeChecks,
      bool verbose) {
    TempDir tmpDir;
  
    return TempDir.create()
  
negative.code: part of hop_tasks;
  
  // TODO(adam): document methods and class
  // TODO(adam?): optional out directory param. Used so that repeat runs
  //              are faster
  
  const _verboseArgName = 'verbose';
  const _enableTypeChecksArgName = 'enable-type-checks';
  const _formatMachineArgName = 'format-machine';
  
  /**
   * [delayedFileList] a [List<String>] mapping to paths to dart files or some
  