anchor.diff:            // If we didn't get a recent set of type checking results, we put in a request and wait for at most 'timeout' for a response
             match timeout with
             | Some timeout ->
  -            let! computation = Async.StartChild(x.ParseAndCheckFile(fileName, src, opts), timeout)
  +            let! computation = Async.StartChild(x.ParseAndCheckFile(fileName, src, opts, obs), timeout)
               try 
                 let! result = computation
                 return Some(result)
               with
               | :? System.TimeoutException -> return None
             | None ->
  -            let! result = x.ParseAndCheckFile(fileName, src, opts) 
  +            let! result = x.ParseAndCheckFile(fileName, src, opts, obs) 
               return Some(result) }
   
     /// Returns a TypeParsedResults if available, otherwise None
  
positive.code:     checker.InvalidateConfiguration(options)
  
    //flush all caches and garbage collect
    member x.ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients() =
      Debug.WriteLine("LanguageService: Clearing root caches and finalizing transients")
      checker.ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients()
  
negative.code:     | Some (untyped,typed,_) when typed.HasFullTypeCheckInfo  -> Some (ParseAndCheckResults(typed, untyped))
      | _ -> None
  
    member internal x.ParseAndCheckFile (fileName, src, opts, obsoleteCheck) =
      async {
        try
           let fileName = fixFileName(fileName)
           let! parseResults, checkAnswer = checker.ParseAndCheckFileInProject(fileName, 0, src ,opts, obsoleteCheck, null )
  
           // Construct new typed parse result if the task succeeded
           let results =
  