anchor.diff:                              LoggingService.logDebug "Completion: residue %s" residue
                               result.DefaultCompletionString <- residue
                               result.TriggerWordLength <- residue.Length
  -
  +                            
                           //TODO Use previous token and pattern match to detect whitespace
                           if Regex.IsMatch(lineToCaret, "(^|\s+|\()\w+$", RegexOptions.Compiled) then
                               // Add the code templates and compiler generated identifiers if the completion char is not '.'
  
positive.code:                                 | Some location ->
                                      if location.Line = context.line && location.Column > lineToCaret.LastIndexOf("->") then
                                          LoggingService.logDebug "Completion: got parse results from cache"
                                          return document.TryGetAst()
                                      else
                                          // force sync
                                          documentContext.ReparseDocument()
                                          document.GetAst()
  
                                          return document.TryGetAst()
                                  | None -> return None
                              | _ -> return None
                          })
  
negative.code:         [for keyValuePair in KeywordList.modifiers do
              yield CompletionData(keyValuePair.Key, IconId("md-keyword"),keyValuePair.Value) ]
  
      let parseLock = obj()
      let getFsiCompletions context = 
  
  