anchor.diff:    assert(listener.numExceptions == 0);
     for (var package in packages) {
       print('Migrating $package');
  +    listener.currentPackage = package.name;
       var testUri = thisSdkUri.resolve(package.packagePath);
       var contextCollection = AnalysisContextCollectionImpl(
           includedPaths: [testUri.toFilePath()], sdkPath: sdk.sdkPath);
  
positive.code:   /// if its category contains the string.
    final String categoryOfInterest;
  
    final groupedExceptions = <String, List<String>>{};
  
    int numExceptions = 0;
  
  
negative.code:       var migration = NullabilityMigration(listener, permissive: true);
        for (var file in localFiles) {
          var resolvedUnit = await context.currentSession.getResolvedUnit(file);
          if (!resolvedUnit.errors.any((e) => e.severity == Severity.error)) {
            migration.prepareInput(resolvedUnit);
          } else {
            print('Skipping $file, it has errors.');
          }
        }
        for (var file in localFiles) {
          var resolvedUnit = await context.currentSession.getResolvedUnit(file);
          if (!resolvedUnit.errors.any((e) => e.severity == Severity.error)) {
            migration.processInput(resolvedUnit);
          }
        }
        migration.finish();
      }
  