anchor.diff:            if error.Severity = FSharpErrorSeverity.Error then ErrorType.Error
             else ErrorType.Warning
           Error(errorType, String.wrapText error.Message 80, DocumentRegion (error.StartLineAlternate, error.StartColumn + 1, error.EndLineAlternate, error.EndColumn + 1))
  -
         parseResults.GetErrors() |> (Seq.map formatError >> doc.AddRange)
         let! allSymbolUses = parseResults.GetAllUsesOfAllSymbolsInFile()
  -      match allSymbolUses with
  -      | Some symbolUses ->
  +      allSymbolUses |> Option.iter (fun symbolUses ->
           for symbolUse in symbolUses do
             if not (doc.AllSymbolsKeyed.ContainsKey symbolUse.RangeAlternate.End)
  -          then doc.AllSymbolsKeyed.Add(symbolUse.RangeAlternate.End, symbolUse)
  -      | None -> ()
  +          then doc.AllSymbolsKeyed.Add(symbolUse.RangeAlternate.End, symbolUse))
   
         //Set code folding regions, GetNavigationItems may throw in some situations
         LoggingService.LogDebug ("FSharpParser: processing regions on {0}", shortFilename)
  
positive.code: 
          Async.StartAsTask(
              cancellationToken = cancellationToken,
              computation = async {
  
              let parsedDoc = async {                    
                match tryGetFilePath fileName proj with
                | Some filePath -> 
                    LoggingService.LogDebug ("FSharpParser: Running ParseAndCheckFileInProject for {0}", shortFilename)
                    let projectFile = proj |> function null -> filePath | proj -> proj.FileName.ToString()
                    let obsolete = isObsolete parseOptions.FileName parseOptions.Content.Version cancellationToken.IsCancellationRequested
                    let! results = languageService.ParseAndCheckFileInProject(projectFile, filePath, 0, content.Text, obsolete)
                    //if you ever want to see the current parse tree
                    //let pt = match results.ParseTree with Some pt -> sprintf "%A" pt | _ -> "" 
                    LoggingService.LogDebug ("FSharpParser: Parse and check results retieved on {0}", shortFilename)
                    let defines = CompilerArguments.getDefineSymbols filePath (proj |> Option.ofNull)
                    return! ParsedDocument.create(parseOptions, results , defines)
                | None -> return FSharpParsedDocument(fileName, Flags = ParsedDocumentFlags.NonSerializable)} |> Async.RunSynchronously
              
              parsedDoc.LastWriteTimeUtc <- try File.GetLastWriteTimeUtc(fileName) with _ -> DateTime.UtcNow
              LoggingService.LogDebug ("FSharpParser: returning ParsedDocument on {0}", shortFilename)
              return parsedDoc :> _})
negative.code:     member val AllSymbolsKeyed = Dictionary<_,_>() with get, set
  
  module ParsedDocument =
    let create (parseOptions: ParseOptions) (parseResults: ParseAndCheckResults) defines =
      //Try creating tokens
      async {
        let fileName = parseOptions.FileName
  