anchor.diff:      let pageFileInfo = FileInfo(pageFileName+".gz")
       if pageFileInfo.Exists then
           try
  -            // File.ReadAllText(pageFileInfo.FullName)
               use archive = File.OpenRead(pageFileInfo.FullName)
               use compressed = new GZipStream(archive,CompressionMode.Decompress)
               use reader = new StreamReader(compressed,Encoding.UTF8)
  
positive.code:                         None
          } |> Async.StartAsTask)
  
  /// [omit]
  let getCatalogAPI auth nugetUrl =
      let catalogApi =
          async {
              match calculateNuGet3Path nugetUrl with
              | None -> return None
              | Some v3Path ->
                  let source = { Url = v3Path; Authentication = auth }
                  let! v3res = getNuGetV3Resource source Catalog |> Async.Catch
                  return
                      match v3res with
                      | Choice1Of2 s -> Some s
                      | Choice2Of2 ex ->
                          if verbose then traceWarnfn "getCatalogAPI: %s" (ex.ToString())
                          None
          } |> Async.RunSynchronously
      match catalogApi with
      | Some url when url |> String.IsNullOrEmpty |> not -> url
      | _-> failwithf "NO NuGetV3 Catalog on %s" nugetUrl
  
  type NugetV3CatalogIndexItem =
      {   [<JsonProperty("@id")>]
          Id : string
  
negative.code:         Items : NugetV3CatalogPageItem []
      }
  
  
  let private getHostSpecificFileName fromUrl =
      let normalizeFileName name =
  