anchor.diff:              AuthProvider.ofFunction (fun _ -> Some (Auth.Credentials auth))
       else
           getAuth()
  +
  +let internal parseProtocolVersion(text:string, source) =
  +    if text.Contains("protocolVersion:") then
  +        if not (protocolVersionRegex.IsMatch(text)) then
  +            failwithf "Could not parse protocolVersion in \"%s\"" text
  +
  +        let textProtocolVersion = protocolVersionRegex.Match(text).Groups.[1].Value
  +        let (parsed, specifiedProtocolVersion) = Int32.TryParse(textProtocolVersion)
  +
  +        match (parsed,specifiedProtocolVersion) with
  +        | (true, 2) -> Some NugetProtocolVersion.ProtocolVersion2
  +        | (true, 3) -> Some NugetProtocolVersion.ProtocolVersion3
  +        | _ -> failwithf "Unsupported protocolVersion in \"%s\". Should be either 2 or 3" text
  +    else
  +        None
   
   /// Represents the package source type.
   type PackageSource =
  
positive.code: #endif
                      LocalNuGet(source,None)
                  else
                      if source.Contains("/v3/") || source.EndsWith("index.json") then
                          NuGetV3 { Url = source; Authentication = auth }
                      else
                          NuGetV2 { Url = source; Authentication = auth }
  
              | _ ->  match System.Uri.TryCreate(source, System.UriKind.Relative) with
                      | true, uri -> LocalNuGet(source,None)
                      | _ -> failwithf "unable to parse package source: %s" source
  
negative.code:                 parts.[1].Replace("\"","").TrimEnd([| '/' |])
  
          let feed = normalizeFeedUrl source
  
          PackageSource.Parse(feed, parseProtocolVersion(line, feed), parseAuth(line, feed))
  
      static member Parse(source,auth) =
          match tryParseWindowsStyleNetworkPath source with
  