anchor.diff:  open Microsoft.FSharp.Compiler.Range
   open Microsoft.FSharp.Compiler.SourceCodeServices
   open System.Runtime.Caching
  +open System.Collections.Concurrent
   
   type internal FSharpCompletionProvider
       (
  
positive.code:             let! results = 
                  FSharpCompletionProvider.ProvideCompletionsAsyncAux(checker, sourceText, context.Position, projectOptions, 
                                                                      document.FilePath, textVersion.GetHashCode(), getAllSymbols)
              context.AddItems(results)
          } |> Async.Ignore |> RoslynHelpers.StartAsyncUnitAsTask context.CancellationToken
          
      override this.GetDescriptionAsync(_: Document, completionItem: Completion.CompletionItem, cancellationToken: CancellationToken): Task<CompletionDescription> =
          async {
              match declarationItemsCache.Get(completionItem.DisplayText) with
              | :? FSharpDeclarationListItem as declarationItem -> 
                  let! description = declarationItem.StructuredDescriptionTextAsync
                  let documentation = List()
                  let collector = RoslynHelpers.CollectTaggedText documentation
  
negative.code:             (documentId, document.FilePath, defines)
  
          FSharpCompletionProvider.ShouldTriggerCompletionAux(sourceText, caretPosition, trigger.Kind, getInfo)
          
      override this.ProvideCompletionsAsync(context: Completion.CompletionContext) =
          asyncMaybe {
              let document = context.Document
  