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:         let proj = parseOptions.Project
  
          let doc = MonoDevelop.tryGetVisibleDocument fileName
  
          if doc.IsNone || not (MDLanguageService.SupportedFileName (fileName)) then null else
  
          let shortFilename = Path.GetFileName fileName
          LoggingService.LogDebug ("FSharpParser: Parse starting on {0}", shortFilename)
  
          let isObsolete filename version cancellationRequested =
            SourceCodeServices.IsResultObsolete(fun () ->
              let shortFilename = Path.GetFileName filename
              try
                if not cancellationRequested then
                  match MonoDevelop.tryGetVisibleDocument filename with
                  | Some doc ->
                    let newVersion = doc.Editor.Version
  
negative.code: 
          Async.StartAsTask(
              cancellationToken = cancellationToken,
              computation = 
                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
                      try
                        let! pendingParseResults = Async.StartChild(languageService.ParseAndCheckFileInProject(projectFile, filePath, 0, content.Text, obsolete), ServiceSettings.maximumTimeout)
                        //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)
                        let! results = pendingParseResults
                        return! ParsedDocument.create parseOptions results defines
                      with exn -> 
                        LoggingService.LogError ("FSharpParser: Error ParsedDocument on {0}", shortFilename, exn)
                        return FSharpParsedDocument(fileName, Flags = ParsedDocumentFlags.NonSerializable) :> _
                  | None -> return FSharpParsedDocument(fileName, Flags = ParsedDocumentFlags.NonSerializable) :> _ })