anchor.diff:          'version': version,
           'unformattedFiles': unformattedFiles,
           'analyzerErrors': _analyzerItemJson.length,
  -        'pubClean': pubClean
  +        'pubClean': pubClean,
  +        'authorDomains': (authorDomains.toList()..sort()).join(', ')
         };
   
     Iterable<Map<String, Object>> get _analyzerItemJson sync* {
  
positive.code:     }
    }
  }
  
negative.code:   final int unformattedFiles;
    final Set<AnalyzerOutput> analyzerItems;
    final bool pubClean;
    final Set<String> authorDomains;
  
    _MiniSum._(this.name, this.version, this.unformattedFiles, this.analyzerItems,
        this.pubClean, this.authorDomains);
  
    factory _MiniSum.fromSummary(Summary summary) {
      var authorDomains =
          summary.pubSummary.authors.map(_domainFromAuthor).toSet();
  
      return new _MiniSum._(
          summary.packageName,
          summary.packageVersion.toString(),
          summary.unformattedFiles.length,
          summary.analyzerItems,
          summary.pubSummary.exitCode == 0,
          authorDomains);
    }
  
    Map<String, dynamic> toJson() => <String, dynamic>{
  