anchor.diff:  open Microsoft.FSharp.Compiler.Ast
   open Microsoft.FSharp.Compiler.SourceCodeServices
   
  -type CheckResults =
  -    | Ready of (FSharpParseFileResults * FSharpCheckFileResults) option
  -    | StillRunning of Async<(FSharpParseFileResults * FSharpCheckFileResults) option>
  -    
   type FSharpChecker with
       member checker.ParseDocument(document: Document, parsingOptions: FSharpParsingOptions, sourceText: string, userOpName: string) =
           asyncMaybe {
  
positive.code:                     
                  let! results =
                      match freshResults with
                      | Ready x -> async.Return x
                      | StillRunning worker ->
                          async {
                              match checker.TryGetRecentCheckResultsForFile(filePath, options) with
                              | Some (parseResults, checkFileResults, _) ->
                                  return Some (parseResults, checkFileResults)
                              | None ->
                                  return! worker
                          }
                  return bindParsedInput results
              }
          else parseAndCheckFile |> Async.map bindParsedInput
  
  
      member checker.ParseAndCheckDocument(document: Document, options: FSharpProjectOptions, allowStaleResults: bool, userOpName: string, ?sourceText: SourceText) =
  
negative.code:                         Some (parseResults, checkFileResults)
              }
  
              let tryGetFreshResultsWithTimeout() =
                  async {
                      let! worker = Async.StartChild(parseAndCheckFile, millisecondsTimeout=Settings.LanguageServicePerformance.TimeUntilStaleCompletion)
                      try
                          return! worker
                      with :? TimeoutException ->
                          return None // worker is cancelled at this point, we cannot return it and wait its completion anymore
                  }
  
          let bindParsedInput(results: (FSharpParseFileResults * FSharpCheckFileResults) option) =
              match results with
  