anchor.diff:            'noopt', 'Run an in-place precompilation', ['--noopt'], [], false,
             type: 'bool'),
         new _TestOptionSpecification(
  -          'fast_startup', 'Pass the --fast-startup flag to dart2js',
  -          ['--fast-startup'], [], false,
  -          type: 'bool'),
  -      new _TestOptionSpecification(
  -          'hot_reload', 'Run hot reload stress tests', ['--hot-reload'], [],
  -          false, type: 'bool'),
  +          'fast_startup',
  +          'Pass the --fast-startup flag to dart2js',
  +          ['--fast-startup'],
  +          [],
  +          false,
  +          type: 'bool'),
  +      new _TestOptionSpecification('hot_reload', 'Run hot reload stress tests',
  +          ['--hot-reload'], [], false,
  +          type: 'bool'),
         new _TestOptionSpecification(
             'hot_reload_rollback',
  -          'Run hot reload rollback stress tests', ['--hot-reload-rollback'],
  -          [],
  -          false, type: 'bool'),
  +          'Run hot reload rollback stress tests',
  +          ['--hot-reload-rollback'],
  +          [],
  +          false,
  +          type: 'bool'),
         new _TestOptionSpecification(
             'use_blobs',
             'Use mmap instead of shared libraries for precompilation',
  -          ['--use-blobs'], [], false, type: 'bool'),
  +          ['--use-blobs'],
  +          [],
  +          false,
  +          type: 'bool'),
         new _TestOptionSpecification(
             'timeout', 'Timeout in seconds', ['-t', '--timeout'], [], -1,
             type: 'int'),
  
positive.code:     if (selectors.containsKey('observatory_ui')) {
        if (selectors.length == 1) {
          configuration['packages'] = TestUtils.dartDirUri
            .resolve('runtime/observatory/.packages').toFilePath();
        } else {
          // Make a new configuration whose selectors map only contains
          // observatory_ui, and remove the key from the original selectors.
          // The only mutable value in the map is the selectors, so a
          // shallow copy is safe.
          var observatoryConfiguration = new Map.from(configuration);
          observatoryConfiguration['selectors'] =
            {'observatory_ui': selectors['observatory_ui']};
          selectors.remove('observatory_ui');
  
          // Set the packages flag.
          observatoryConfiguration['packages'] = TestUtils.dartDirUri
            .resolve('runtime/observatory/.packages').toFilePath();
  
          // Return the expansions of both configurations. Neither will reach
          // this line in the recursive call to _expandConfigurations.
  
negative.code: 
    List<String> _constructReproducingCommandArguments(Map config) {
      var arguments = new List<String>();
      for (var option in _options) {
        var name = option.name;
        if (!config.containsKey(name) || _blacklistedOptions.contains(name)) {
          continue;
        }
        var value = config[name];
        if (config[name] == option.defaultValue ||
            (name == 'packages' &&
                value ==
                    TestUtils.dartDirUri.resolve('.packages').toFilePath())) {
          continue;
        }
        shortest(String a, String b) => a.length <= b.length ? a : b;
        var key = option.keys.reduce(shortest);
        if (option.type == 'bool') {
          arguments.add(key);
        } else if (key.startsWith('--')) {
          // long version
          arguments.add(key);
          arguments.add("$value");
        } else {
          // short version
          assert(key.startsWith('-'));
          arguments.add("$key$value");
        }
      }
      return arguments;
  