anchor.diff:        match stale with 
         | AllowStaleResults.MatchingFileName -> checker.TryGetRecentTypeCheckResultsForFile(fixFileName fileName, options) 
         | AllowStaleResults.MatchingSource -> checker.TryGetRecentTypeCheckResultsForFile(fixFileName fileName, options, source=src) 
  -      | AllowStaleResults.No -> None
  +
       match res with 
       | Some (untyped,typed,_) when typed.HasFullTypeCheckInfo  -> Some (ParseAndCheckResults(typed, untyped))
       | _ -> None
   
  -  member internal x.ParseAndCheckFile (fileName, src, opts, obsoleteCheck) =
  +  member internal x.ParseAndCheckFile (fileName, src, version:int, opts, obsoleteCheck) =
       async {
         try
            let fileName = fixFileName(fileName)
  -         let! parseResults, checkAnswer = checker.ParseAndCheckFileInProject(fileName, 0, src ,opts, obsoleteCheck, null )
  +         let! parseResults, checkAnswer = checker.ParseAndCheckFileInProject(fileName, version, src ,opts, obsoleteCheck, null )
   
            // Construct new typed parse result if the task succeeded
            let results =
  
positive.code:               return None
            | None ->
              LoggingService.LogDebug("LanguageService: GetTypedParseResultWithTimeout: No stale results - typechecking without timeout")
              let! result = x.ParseAndCheckFile(fileName, src, opts, obs) 
              return Some(result) }
  
    /// Returns a TypeParsedResults if available, otherwise None
    member x.GetTypedParseResultIfAvailable(projectFilename, fileName:string, src, stale) = 
      let opts = x.GetCheckerOptions(fileName, projectFilename, src)
      LoggingService.LogDebug("LanguageService: GetTypedParseResultIfAvailable: file={0}", Path.GetFileName(fileName))
      match x.TryGetStaleTypedParseResult(fileName, opts, src, stale)  with
      | Some results -> results
      | None -> ParseAndCheckResults.Empty
  
    /// Get all the uses of a symbol in the given file (using 'source' as the source for the file)
    member x.GetUsesOfSymbolAtLocationInFile(projectFilename, fileName, source, line:int, col, lineStr) =
      asyncMaybe {
        LoggingService.LogDebug("LanguageService: GetUsesOfSymbolAtLocationInFile: file:{0}, line:{1}, col:{2}", Path.GetFileName(fileName), line, col)
        let! colu, identIsland = Parsing.findLongIdents(col, lineStr) |> async.Return
        let! results = x.GetTypedParseResultWithTimeout(projectFilename, fileName, source, AllowStaleResults.MatchingSource)
        let! symbolUse = results.GetSymbolAtLocation(line, colu, lineStr)
        let lastIdent = Seq.last identIsland
        let! refs = results.GetUsesOfSymbolInFile(symbolUse.Symbol) |> Async.map Some
  
negative.code:   | MatchingFileName
    // Allow checker results where the source matches but where the background builder may not have caught up yet after some other change
    | MatchingSource
  
  
  //type Debug = System.Console
  
  