anchor.diff:  open Microsoft.FSharp.Compiler.Range
   open Microsoft.FSharp.Compiler.SourceCodeServices
   
  -type internal FSharpNavigableItem(document: Document, textSpan: TextSpan, displayString: string) =
  -    member this.DisplayString = displayString
  +type internal FSharpNavigableItem(document: Document, textSpan: TextSpan) =
   
       interface INavigableItem with
           member this.Glyph = Glyph.BasicFile
  
positive.code:                         let refDocument = document.Project.Solution.GetDocument(refDocumentId)
                          let! refSourceText = refDocument.GetTextAsync(cancellationToken) |> Async.AwaitTask
                          let refTextSpan = CommonRoslynHelpers.FSharpRangeToTextSpan(refSourceText, range)
                          let refDisplayString = refSourceText.GetSubText(refTextSpan).ToString()
                          results.Add(FSharpNavigableItem(refDocument, refTextSpan, refDisplayString))
                  | None -> ()
              | None -> ()
              return results.AsEnumerable()
  
negative.code:             // REVIEW: document this use of a blocking wait on the cancellation token, explaining why it is ok
              definitionTask.Wait(cancellationToken)
              
              if definitionTask.Status = TaskStatus.RanToCompletion && definitionTask.Result.Any() then
                  let navigableItem = definitionTask.Result.First() // F# API provides only one INavigableItem
                  let workspace = document.Project.Solution.Workspace
                  let navigationService = workspace.Services.GetService<IDocumentNavigationService>()
                  ignore presenters
                  navigationService.TryNavigateToSpan(workspace, navigableItem.Document.Id, navigableItem.SourceSpan)
  
                  // FSROSLYNTODO: potentially display multiple results here
                  // If GotoDef returns one result then it should try to jump to a discovered location. If it returns multiple results then it should use 
                  // presenters to render items so user can choose whatever he needs. Given that per comment F# API always returns only one item then we 
                  // should always navigate to definition and get rid of presenters.
                  //
                  //let refDisplayString = refSourceText.GetSubText(refTextSpan).ToString()
                  //for presenter in presenters do
                  //    presenter.DisplayResult(navigableItem.DisplayString, definitionTask.Result)
                  //true
  
              else
                  false
  