anchor.diff:                      ParseAndCheckResults.Empty
                       
                 reply.Reply results
  -            with exn -> Debug.WriteLine( sprintf "LanguageService agent: Exception: %s" (exn.ToString()) )
  +            with exn -> Debug.WriteLine("LanguageService agent: Exception: {0}", exn.ToString())
           })
   
     static member IsAScript fileName =
  
positive.code:   member x.ParseAndCheckFileInProject(projectFilename, fileName:string, src) =
      async {
        let opts = x.GetCheckerOptions(fileName, projectFilename, src)
        Debug.WriteLine(sprintf "LanguageService: ParseAndCheckFileInProject: Trigger parse (fileName=%s)" fileName)
        let! results = mbox.PostAndAsyncReply(fun r -> fileName, src, opts, r)
        return results
      }
  
    member x.ParseFileInProject(projectFilename, fileName:string, src) = 
      let opts = x.GetCheckerOptions(fileName, projectFilename, src)
      Debug.WriteLine(sprintf "LanguageService: ParseFileInProject: Get untyped parse result (fileName=%s)" fileName)
      checker.ParseFileInProject(fixFileName fileName, src, opts)
  
    member internal x.TryGetStaleTypedParseResult(fileName:string, options, src, stale)  = 
  
negative.code:     [".fsx";".fsscript";".sketchfs"] |> List.exists ((=) ext)
  
  
    member x.RemoveFromProjectInfoCache(projFilename:string, ?properties) =
      //Debug.WriteLine(sprintf "LanguageService: Clearing ProjectInfoCache : %A" projectInfoCache.Keys)
      let properties = defaultArg properties ["Configuration", "Debug"]
      let key = (projFilename, properties)
      Debug.WriteLine("LanguageService: Removing {0} from projectInfoCache", projFilename)
      match (!projectInfoCache).TryExtract(key) with
      | Some _extractee, cache -> projectInfoCache := cache
      | None, _unchangedCache -> ()
  