anchor.diff:    }
   
     final bytes = sourceDill.readAsBytesSync();
  -  switch (mode) {
  -    case Mode.astFromBinaryLazy:
  -      _benchmarkAstFromBinary(bytes, eager: false);
  -      break;
  -    case Mode.astFromBinaryEager:
  -      _benchmarkAstFromBinary(bytes, eager: true);
  -      break;
  -    case Mode.astToBinary:
  -      _benchmarkAstToBinary(bytes);
  -      break;
  -  }
  +  benchmark(bytes);
   }
   
   const warmupIterations = 100;
  
positive.code:     args = args.skip(1).toList(growable: false);
    }
  
    switch (args[0]) {
      case 'ast-to-binary':
        mode = Mode.astToBinary;
        break;
      case 'ast-from-binary-lazy':
        mode = Mode.astFromBinaryLazy;
        break;
      case 'ast-from-binary-eager':
        mode = Mode.astFromBinaryEager;
        break;
      default:
        return false;
    }
  
    sourceDill = new File(args[1]);
  
negative.code: import 'dart:math';
  import 'dart:typed_data';
  
  final usage = '''
  Usage: binary_bench.dart [--golem] <Benchmark> <SourceDill>
  
  Benchmark can be one of: ${benchmarks.keys.join(', ')}
  ''';
  
  typedef void Benchmark(Uint8List bytes);
  
  final benchmarks = <String, Benchmark>{
    'AstFromBinaryEager': (Uint8List bytes) {
      return _benchmarkAstFromBinary(bytes, eager: true);
    },
    'AstFromBinaryLazy': (Uint8List bytes) {
      return _benchmarkAstFromBinary(bytes, eager: false);
    },
    'AstToBinary': (Uint8List bytes) {
      return _benchmarkAstToBinary(bytes);
    },
  };
  
  Benchmark benchmark;
  File sourceDill;
  bool forGolem = false;
  
  