anchor.diff:                              referenceSourceProvider.NavigateTo symbol
                           else
                               match tryFindSourceUrl symbol with
  -                            | Some(symbolCache, url) ->
  -                                return navigateToSource symbol symbolCache url
  +                            | Some url ->
  +                                return! navigateToSource symbol url
                               | None ->
                                   match pref with
                                   | NavigationPreference.SymbolSourceOrMetadata ->
  
positive.code: open SourceLink
  open SourceLink.SymbolStore
  open System.Diagnostics
  
  [<RequireQualifiedAccess>]
  type NavigationPreference =
  
negative.code:                 use pdbStream = File.OpenRead(pdbPath)
                  let symbolCache = SymbolCache(cacheDir)
                  let pdbReader = symbolCache.ReadPdb pdbStream pdbPath
                  if pdbReader.IsSourceIndexed then                    
                      fsSymbol.ImplementationLocation
                      |> Option.bind (fun range -> 
                          // Fsi files don't appear on symbol servers, so we try to get urls via its associated fs files
                          let path, isFsiFile = 
                              let path = Path.GetFullPathSafe(range.FileName)
                              let isFsiFile = path.EndsWith(".fsi", StringComparison.OrdinalIgnoreCase)
                              let newPath = if isFsiFile then Path.ChangeExtension(path, ".fs") else path
                              newPath, isFsiFile
                          pdbReader.GetDownloadUrl(path)
                          |> Option.map (fun url -> 
                              if isFsiFile then 
                                  Path.ChangeExtension(url, ".fsi")
                              else url))
                  else None
              else None)
  
  