anchor.diff:     * target. For a complete view of the package, all of these files need to be
      * taken into account.
      */
  -  static List<String> _findPackagesFile(
  +  static List<File> _findPackagesFile(
       ResourceProvider provider,
       String root,
       String filePath,
  
positive.code:   @override
    final String root;
  
    /**
     * The paths to the .packages files.
     */
    final List<String> _packagesFilePaths;
  
    /**
     * The map of package locations indexed by package name.
     *
     * This is a cached field.
     */
    Map<String, List<Folder>> _packageMap;
  
    /**
     * The package location strategy.
     *
     * This is a cached field.
     */
    Packages _packages;
  
    GnWorkspace._(this.provider, this.root, this._packagesFilePaths);
  
    @override
    Map<String, List<Folder>> get packageMap =>
        _packageMap ??= _convertPackagesToMap(packages);
  
    Packages get packages => _packages ??= _createPackages();
  
    @override
    UriResolver get packageUriResolver =>
  
negative.code:       if (folder.getChildAssumingFolder(_jiriRootName).exists) {
          // Found the .jiri_root file, must be a non-git workspace.
          String root = folder.path;
  
          var packagesFiles = _findPackagesFile(provider, root, filePath);
          if (packagesFiles.isEmpty) {
            return null;
          }
  
          var packageMap = <String, List<Folder>>{};
          for (var packagesFile in packagesFiles) {
            var packages = parseDotPackagesFile(provider, packagesFile);
            for (var package in packages.packages) {
              packageMap[package.name] = [package.libFolder];
            }
          }
  
          return GnWorkspace._(provider, root, packageMap);
        }
  
        // Go up a folder.
  