anchor.diff:      update();
     }
     Stopwatch _lastUpdate;
  -  void update() {
  -    if (_lastUpdate == null || _lastUpdate.elapsedMilliseconds > 90) {
  +  void update({bool flush = false}) {
  +    if (_lastUpdate == null || _lastUpdate.elapsedMilliseconds > 90 || flush) {
         _lastUpdate ??= new Stopwatch();
  -      system.stderr.write('\r$this');
  +      final String line = toString();
  +      system.stderr.write('\r$line');
  +      if (_lastLength > line.length) {
  +	system.stderr.write(' ' * (_lastLength - line.length));
  +      }
  +      _lastLength = line.length;
         _lastUpdate.reset();
         _lastUpdate.start();
       }
     }
  +  void flush() => update(flush: true);
     bool get hadErrors => _withoutLicense > 0;
     @override
     String toString() {
       int percent = (100.0 * (_withLicense + _withoutLicense) / max).round();
  -    return '${(_withLicense + _withoutLicense).toString().padLeft(10)} of $max ${'█' * (percent ~/ 10)}${'░' * (10 - (percent ~/ 10))} $percent% ($_withoutLicense missing licenses)  $label    ';
  +    return '${(_withLicense + _withoutLicense).toString().padLeft(10)} of $max ${'█' * (percent ~/ 10)}${'░' * (10 - (percent ~/ 10))} $percent% ($_withoutLicense missing licenses)  $label';
     }
   }
   
  
positive.code:   int _withoutLicense = 0;
    String get label => _label;
    String _label = '';
    set label(String value) {
      if (value.length > 50)
        value = '.../' + value.substring(math.max(0, value.lastIndexOf('/', value.length - 45) + 1));
  
negative.code:         .toList();
        output.sort();
        print(output.join('\n${"-" * 80}\n'));
        progress.label = 'Done.';
        progress.flush();
        system.stderr.writeln('');
      } else {
        RegExp signaturePattern = new RegExp(r'Signature: (\w+)');
  
  