anchor.diff:          LoggingService.LogDebug("LanguageService agent: Exception: {0}", exn.ToString())
           return ParseAndCheckResults.Empty }
   
  +  member x.ParseAndCheckFileInProject(projectFilename, fileName, version:int, src:string, obsoleteCheck) =
  +    let fileName = if Path.GetExtension fileName = ".sketchfs" then Path.ChangeExtension (fileName, ".fsx") else fileName
  +    let opts = x.GetCheckerOptions(fileName, projectFilename, src)
  +    x.ParseAndCheckFile(fileName, src, version, opts, obsoleteCheck) 
  +
     /// Parses and checks the given file in the given project under the given configuration.
     ///Asynchronously returns the results of checking the file.
  -  member x.GetTypedParseResultWithTimeout(projectFilename, fileName:string, src, stale, ?timeout, ?obsoleteCheck) =
  +  member x.GetTypedParseResultWithTimeout(projectFilename, fileName, version:int, src:string, stale, ?timeout, ?obsoleteCheck) =
       let obs = defaultArg obsoleteCheck (IsResultObsolete(fun () -> false))
       async {
         let fileName = if Path.GetExtension fileName = ".sketchfs" then Path.ChangeExtension (fileName, ".fsx") else fileName
  
positive.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
    // Don't allow stale results
    | No
  
  //type Debug = System.Console
  
  
negative.code:           match timeout with
            | Some timeout ->
              LoggingService.LogDebug("LanguageService: GetTypedParseResultWithTimeout: No stale results - typechecking with timeout")
              let! computation = Async.StartChild(x.ParseAndCheckFile(fileName, src, version, opts, obs), timeout)
              try 
                let! result = computation
                return Some(result)
  