anchor.diff:  
   type GotoDeclarationHandler() =
       inherit CommandHandler()
  +
  +    override x.Update (ci:CommandInfo) =
  +        let doc = IdeApp.Workbench.ActiveDocument
  +        let editor = doc.Editor
  +        //disable if theres no editor or filename
  +        if editor = null || editor.FileName = FilePath.Null
  +        then ci.Enabled <- false
  +        else
  +            match doc.ParsedDocument.TryGetAst() with
  +            | Some ast ->
  +                match Refactoring.getSymbolAndLineInfoAtCaret ast editor with
  +                //set bypass as we cant jump
  +                | _lineinfo, Some sym when not (Refactoring.canJump sym editor.FileName doc.Project.ParentSolution) ->
  +                    ci.Bypass <- true
  +                    ci.Enabled <- false
  +                | _lineinfo, _symbol -> ()
  +            //disable for no ast
  +            | None -> ci.Enabled <- false
   
       override x.Run (_data) =
           let doc = IdeApp.Workbench.ActiveDocument
  
positive.code:             match Refactoring.getSymbolAndLineInfoAtCaret ast editor with
                                                //Is this a double check, i.e. isnt update checking can rename?
              | (_line, col, lineTxt), Some sym when Refactoring.canRename sym editor.FileName ctx.Project.ParentSolution ->
                  let rr = FSharpRenameRefactoring(editor, ctx)
                  let lastIdent = Symbols.lastIdent col lineTxt
                  rr.Rename (lastIdent, sym)
              | _ -> ()
  
negative.code:             match doc.ParsedDocument.TryGetAst() with
              | Some ast ->
                  match Refactoring.getSymbolAndLineInfoAtCaret ast doc.Editor with
                  | (_line, col, lineTxt), Some symbolUse when Refactoring.canJump symbolUse doc.Editor.FileName doc.Project.ParentSolution ->
                      let lastIdent = Symbols.lastIdent col lineTxt
                      match Roslyn.getSymbolLocations symbolUse with
                      //We only jump to the first declaration location with this command handler, which is invoked via Cmd D
                      //We could intelligently swich by jumping to the second location if we are already at the first
                      //We could also provide a selection like context menu does.  For now though, we mirror C#
                      | first :: _ -> FSharpRefactoring(doc.Editor, doc).JumpToDeclaration (lastIdent, symbolUse, first)
                      | _ -> ()
                  | _ -> ()
              | _ -> ()
  