anchor.diff:          )
         ];
   
  -      for (var entry in config.entries) {
  -        replacements
  -            .addAll(_optionReplacement(baseName, entry.key, entry.value));
  +      for (var entry in config) {
  +        replacements.addAll(_optionReplacement(baseName, entry));
         }
   
         final content = _Replacement.generate(sourceContent, replacements);
  
positive.code:     .toSet()
      .toList();
  
  const _fileConfigurationMap = {
    'kitchen_sink': [
      {'any_map': true},
      {'any_map': true, 'checked': true, 'non_nullable': true},
      {'any_map': true, 'non_nullable': true},
      {'any_map': true, 'non_nullable': true, 'use_wrappers': true},
      {'any_map': true, 'use_wrappers': true},
    ],
    'default_value': [
      {'any_map': true, 'checked': true},
    ],
    'generic_class': [
      {'use_wrappers': true},
    ],
    'json_test_example': [
      {'non_nullable': true, 'use_wrappers': true},
      {'non_nullable': true},
      {'use_wrappers': true},
    ]
  };
  
  
negative.code: }
  
  Iterable<_Replacement> _optionReplacement(
      String baseName, String optionKey) sync* {
    switch (optionKey) {
      case 'any_map':
        yield _Replacement.addJsonSerializableKey('anyMap', true);
  
        if (baseName == 'kitchen_sink') {
          yield _Replacement(
            'return KitchenSink.fromJson(json.cast<String, dynamic>());',
            'return KitchenSink.fromJson(json);',
          );
          yield _Replacement(
            'factory KitchenSink.fromJson(Map<String, dynamic> json)',
            'factory KitchenSink.fromJson(Map json)',
          );
        }
        break;
      case 'checked':
        yield _Replacement.addJsonSerializableKey('checked', true);
        if (baseName == 'kitchen_sink') {
          yield _Replacement(
            'bool get checked => false;',
            'bool get checked => true;',
          );
        }
        break;
      case 'non_nullable':
        yield _Replacement.addJsonSerializableKey('nullable', false);
  
        if (baseName == 'kitchen_sink') {
          yield _Replacement(
            'List<T> _defaultList<T>() => null;',
            'List<T> _defaultList<T>() => <T>[];',
          );
          yield _Replacement(
            'Set<T> _defaultSet<T>() => null;',
            'Set<T> _defaultSet<T>() => Set<T>();',
          );
          yield _Replacement(
            'Map<K, V> _defaultMap<K, V>() => null;',
            'Map<String, T> _defaultMap<T>() => <String, T>{};',
          );
          yield _Replacement(
            'SimpleObject _defaultSimpleObject() => null;',
            'SimpleObject _defaultSimpleObject() => SimpleObject(42);',
          );
          yield _Replacement(
            'StrictKeysObject _defaultStrictKeysObject() => null;',
            'StrictKeysObject _defaultStrictKeysObject() => '
                "StrictKeysObject(10, 'cool');",
          );
          yield _Replacement(
            'DateTime dateTime;',
            'DateTime dateTime = DateTime(1981, 6, 5);',
          );
          yield _Replacement(
            'bool get nullable => true;',
            'bool get nullable => false;',
          );
        }
        break;
      case 'use_wrappers':
        yield _Replacement.addJsonSerializableKey('useWrappers', true);
        break;
      default:
        throw UnimplementedError('not yet!: $optionKey');
    }
  }
  
  String _configToExtension(Iterable<String> config) =>
      '.g_${_configToName(config.toSet())}.dart';
  
  String _configToName(Set<String> config) =>
      (config.toList()..sort()).join('__');
  
  List<String> get _fileConfigurations => _fileConfigurationMap.values
      .expand((v) => v)
  