anchor.diff:      let key = (projFilename, properties)
       match (!projectInfoCache).TryFind (key) with
              | Some entry, cache ->
  -               Debug.WriteLine (sprintf "LanguageService: GetProjectCheckerOptions: Getting ProjectOptions from cache for %s" projFilename )
  +               Debug.WriteLine ("LanguageService: GetProjectCheckerOptions: Getting ProjectOptions from cache for {0}", projFilename)
                  projectInfoCache := cache
                  entry
              | None, cache ->
  -               Debug.WriteLine (sprintf "LanguageService: GetProjectCheckerOptions: Generating ProjectOptions for %s" <| Path.GetFileName(projFilename) )
  +               lock projectInfoCache (fun () ->
  +               Debug.WriteLine ("LanguageService: GetProjectCheckerOptions: Generating ProjectOptions for {0}", Path.GetFileName(projFilename))
                  let opts = checker.GetProjectOptionsFromProjectFile(projFilename, properties)
                  projectInfoCache := cache.Add (key, opts)
  -               opts 
  +               opts)
   
       // Print contents of check option for debugging purposes
       // Debug.WriteLine(sprintf "GetProjectCheckerOptions: ProjectFileName: %s, ProjectFileNames: %A, ProjectOptions: %A, IsIncompleteTypeCheckEnvironment: %A, UseScriptResolutionRules: %A" 
  
positive.code:   /// Returns a TypeParsedResults if available, otherwise None
    member x.GetTypedParseResultIfAvailable(projectFilename, fileName:string, src, stale) = 
      let opts = x.GetCheckerOptions(fileName, projectFilename, src)
      Debug.WriteLine(sprintf "LanguageService: GetTypedParseResultIfAvailable: fileName=%s" fileName)
      match x.TryGetStaleTypedParseResult(fileName, opts, src, stale)  with
      | Some results -> results
      | None -> ParseAndCheckResults.Empty
  
negative.code:   /// This function is called when the project is know to have changed for reasons not encoded in the ProjectOptions
    /// e.g. dependent references have changed
    member x.InvalidateConfiguration(options) =
      Debug.WriteLine("LanguageService: Invalidating configuration for: {0}", Path.GetFileName(options.ProjectFileName))
      checker.InvalidateConfiguration(options)
  
    //flush all caches and garbage collect
  