anchor.diff:            fileAnalyzerItems?.where((cp) => cp.isError)?.toList() ?? const [];
         final platformBlockers =
             codeErrors.where((cp) => cp.isPlatformBlockingError).toList();
  -      final libPlatformBlocked = platformBlockers.isNotEmpty;
  +      var uri = toPackageUri(package, dartFile);
  +      final libPlatformBlocked = platformBlockers.isNotEmpty &&
  +          (reachableLibs == null || reachableLibs.contains(uri));
         pkgPlatformBlocked = pkgPlatformBlocked || libPlatformBlocked;
  -      var uri = toPackageUri(package, dartFile);
         var directLibs = allDirectLibs == null ? null : allDirectLibs[uri];
         var transitiveLibs =
             allTransitiveLibs == null ? null : allTransitiveLibs[uri];
  
positive.code: 
      Map<String, List<String>> allDirectLibs;
      Map<String, List<String>> allTransitiveLibs;
  
      LibraryScanner libraryScanner;
  
  
negative.code:       rethrow;
      }
    }
  
    Set<String> _reachableLibs(Map<String, List<String>> allTransitiveLibs) {
      final reached = new Set<String>();
      for (var lib in allTransitiveLibs.keys) {
        if (lib.startsWith('package:')) {
          final path = toRelativePath(lib);
          if (path.startsWith('lib/') && !path.startsWith('lib/src')) {
            reached.add(lib);
            reached.addAll(allTransitiveLibs[lib]);
          }
        }
      }
      return reached.intersection(allTransitiveLibs.keys.toSet());
    }
  }
  