anchor.diff:    member x.GetProjectCheckerOptions(projFilename, ?properties) =
       let properties = defaultArg properties ["Configuration", "Debug"]
       let key = (projFilename, properties)
  -    match (!projectInfoCache).TryFind (key) with
  -           | Some entry, cache ->
  -               Debug.WriteLine ("LanguageService: GetProjectCheckerOptions: Getting ProjectOptions from cache for {0}", projFilename)
  -               projectInfoCache := cache
  -               entry
  -           | None, cache ->
  -               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)
  +    lock projectInfoCache (fun () ->
  +       match (!projectInfoCache).TryFind (key) with
  +       | Some entry, cache ->
  +           Debug.WriteLine ("LanguageService: GetProjectCheckerOptions: Getting ProjectOptions from cache for {0}", Path.GetFileName(projFilename))
  +           projectInfoCache := cache
  +           entry
  +       | None, cache ->
  +           Debug.WriteLine ("LanguageService: GetProjectCheckerOptions: Generating ProjectOptions for {0}", Path.GetFileName(projFilename))
  +           let opts = checker.GetProjectOptionsFromProjectFile(projFilename, properties)
  +           projectInfoCache := cache.Add (key, 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:             let dirs = FSharpEnvironment.getDefaultDirectories (None, FSharpTargetFramework.NET_4_5 )
              {opts with OtherOptions = [| yield! opts.OtherOptions
                                           match FSharpEnvironment.resolveAssembly dirs "FSharp.Core" with
                                           | Some fn -> yield sprintf "-r:%s" fn
                                           | None -> Debug.WriteLine("LanguageService: Resolution: FSharp.Core assembly resolution failed!")
                                           match FSharpEnvironment.resolveAssembly dirs "FSharp.Compiler.Interactive.Settings" with
                                           | Some fn -> yield sprintf "-r:%s" fn
                                           | None -> Debug.WriteLine("LanguageService: Resolution: FSharp.Compiler.Interactive.Settings assembly resolution failed!") |]}
          with e -> failwithf "Exception when getting check options for '%s'\n.Details: %A" fileName e
  
  
negative.code: 
  
    member x.RemoveFromProjectInfoCache(projFilename:string, ?properties) =
      let properties = defaultArg properties ["Configuration", "Debug"]
      let key = (projFilename, properties)
      Debug.WriteLine("LanguageService: Removing {0} from projectInfoCache", projFilename)
  