anchor.diff:  
   let private setPageFileContent(pageFileName:String,responseData:String) =
       try
  -        // File.WriteAllText(pageFileName,responseData)
           let bytes = Encoding.UTF8.GetBytes(responseData)
           use archive = File.OpenWrite(pageFileName+".gz")
           use compressed = new GZipStream(archive,CompressionLevel.Optimal)
  
positive.code:         Items : NugetV3CatalogPageItem []
      }
  
  type NugetV3CatalogIndex =
      {   [<JsonProperty("commitId")>]
          CommitId : string
          [<JsonProperty("commitTimeStamp")>]
          CommitTimeStamp : DateTimeOffset
          [<JsonProperty("count")>]
          Count : int
          [<JsonProperty("items")>]
          Items : NugetV3CatalogIndexItem []
      }
  
  /// [omit]
  let private getCatalogIndex auth nugetUrl cancel =
      let catalogApi = getCatalogAPI auth nugetUrl
      let indexResponse =
          async {
              return! safeGetFromUrl (auth, catalogApi, acceptJson)
          } |> (fun future ->
              Async.StartAsTaskProperCancel(future,TaskCreationOptions.None,cancel))
      match indexResponse.Result with
      | NotFound -> failwith "Catalog/3.0 Index NotFound/404"; ""
      | Unauthorized -> failwith "Catalog/3.0 Index Unauthorized/401"; ""
      | UnknownError e -> failwithf "Catalog/3.0 Index N/A %A" e; ""
      | SuccessResponse s -> s
      |> JsonConvert.DeserializeObject<NugetV3CatalogIndex>
  
  let private getHostSpecificFileName fromUrl =
      let normalizeFileName name =
  
negative.code:     let pageFileInfo = FileInfo(pageFileName+".gz")
      if pageFileInfo.Exists then
          try
              use archive = File.OpenRead(pageFileInfo.FullName)
              use compressed = new GZipStream(archive,CompressionMode.Decompress)
              use reader = new StreamReader(compressed,Encoding.UTF8)
  