anchor.diff:      member x.HandleRename() =
           maybe {
               let! state = state
  -            // We have to use it after canRename() in order to get word correctly
               let! cw, sym = state.Word
               let! symbol, fileScopedCheckResults = 
                   // We pass AllowStaleResults.No here because we really need a 100% accurate symbol w.r.t. all prior files,
  
positive.code:                 if res then 
                      let! (_, currentName, references) =
                          match symbol.Scope with
                          | File -> vsLanguageService.FindUsagesInFile (cw, sym, fileScopedCheckResults)
                          | Project -> vsLanguageService.FindUsages (cw, state.File, state.Project) 
                                       |> Async.RunSynchronously   
                          |> Option.map (fun (symbol, lastIdent, refs) -> 
                              symbol, lastIdent,
                                  refs 
  
negative.code:     let documentUpdater = DocumentUpdater(serviceProvider)
  
      let canRename() = 
          let s =
              maybe {
                  let! caretPos = view.TextBuffer.GetSnapshotPoint view.Caret.Position
                  let dte = serviceProvider.GetService<EnvDTE.DTE, SDTE>()
                  let! doc = dte.GetActiveDocument()
                  let! project = ProjectProvider.createForDocument doc
                  return { Word = vsLanguageService.GetSymbol(caretPos, project); File = doc.FullName; Project = project }
              }
          state <- s
          state |> Option.bind (fun s -> s.Word) |> Option.isSome
  
      let rename (oldText: string) (newText: string) (foundUsages: (string * range list) list) =
          try
  