anchor.diff:  
     final AnalysisDriver driver;
   
  -  bool isCompleted = false;
  -  Completer<void>? completer = Completer<void>();
  +  final Completer<void> completer = Completer<void>();
   
     Iterator<Folder>? folderIterator;
  -  List<String>? files = [];
  +
  +  final List<String> files = [];
  +
     int fileIndex = 0;
   
     _DiscoverAvailableFilesTask(this.driver);
  +
  +  bool get isCompleted => completer.isCompleted;
   
     /// Perform the next piece of work, and set [isCompleted] to `true` to
     /// indicate that the task is done, or keeps it `false` to indicate that the
     /// task should continue to be run.
     void perform() {
       if (folderIterator == null) {
  -      files!.addAll(driver.addedFiles);
  +      files.addAll(driver.addedFiles);
   
         // Discover SDK libraries.
         var dartSdk = driver._sourceFactory.dartSdk;
         if (dartSdk != null) {
           for (var sdkLibrary in dartSdk.sdkLibraries) {
             var file = dartSdk.mapDartUri(sdkLibrary.shortName)!.fullName;
  -          files!.add(file);
  +          files.add(file);
           }
         }
   
  
positive.code:     }
      _discoverAvailableFiles();
      _scheduler.notify(this);
      return _discoverAvailableFilesTask!.completer!.future;
    }
  
    @override
  
negative.code:         if (child is File) {
            var path = child.path;
            if (file_paths.isDart(pathContext, path)) {
              files.add(path);
            }
          } else if (child is Folder) {
            _appendFilesRecursively(child);
  