anchor.diff:  }
   
   class ServiceConfig {
  -  String name;
  -  List<ServiceInput> inputs = [];
  +  final String name;
  +  final List<ServiceInput> inputs = [];
  +  
  +  ServiceConfig(this.name);
   }
   
   class ServiceInput {
  -  String importPath;
  -  String filePath;
  +  final String importPath;
  +  final String filePath;
  +  
  +  ServiceInput(this.importPath, this.filePath);
   }
   
   class Config {
  
positive.code:   }
    if (data.containsKey('service')) {
      var service = data['service'];
      config.service = new ServiceConfig();
      if (!service.containsKey('name')) {
        _die('Missing service name.');
      }
      if (!service.containsKey('source') || service['source'] is! List) {
        _die('Missing service source(s).');
      }
      config.service.name = service['name'];
      config.service.inputs.addAll(service['source'].map((src) {
        if (!src.containsKey('import')) {
          _die('Missing service source import.');
  
negative.code:       if (!src.containsKey('file')) {
          _die('Missing service source file.');
        }
        return new ServiceInput(src['import'], src['file']);
      }));
      if (data.containsKey('discovery')) {
        _die('Cannot specify both discovery and service.');
  