anchor.diff:            tag = partOf ? 'p' : 'P';
             type = '';
             if (partOf) {
  -            final partOfString =
  -                file.readAsLinesSync().firstWhere((str) => str.contains('part of'));
  +            String partOfString;
  +
  +            final lines =
  +                utf8.decoder.bind(file.openRead()).transform(LineSplitter());
  +            await for (final line in lines) {
  +              if (line.contains('part of')) {
  +                partOfString = line;
  +                break;
  +              }
  +            }
   
               if (partOfString.isNotEmpty) {
                 display = partOfString.split("'")[1];
  
positive.code:     });
    }
  
    Future<Iterable<Iterable<String>>> addFileSystemEntity(String name) {
      final type = FileSystemEntity.typeSync(name);
  
      if (type == FileSystemEntityType.directory) {
        return Directory(name)
            .list(recursive: true, followLinks: options['follow-links'] as bool)
            .map((file) {
          if (file is File && path.extension(file.path) == '.dart') {
            return parseFile(file);
          } else {
            return <String>[];
          }
        }).toList();
      } else if (type == FileSystemEntityType.file) {
        return Future.value([parseFile(File(name))]);
      } else if (type == FileSystemEntityType.link &&
          options['follow-links'] as bool) {
        return addFileSystemEntity(Link(name).targetSync());
  
negative.code:                   ? 'line:${unit.lineInfo.getLocation(member.offset).lineNumber}'
                    : '',
                'class:${declaration.name}',
                'signature:${tag == 'g' ? '' : member.parameters.toString()}',
                'type:${member.returnType.toString()}'
              ]);
            }
  