anchor.diff:      // 
       /// Cache of builds keyed by options.        
       let incrementalBuildersCache = 
  -        MruCache<CompilationThreadToken, FSharpProjectOptions, (IncrementalBuilder option * FSharpErrorInfo[])>
  +        MruCache<AnyCallerThreadToken, FSharpProjectOptions, (IncrementalBuilder option * FSharpErrorInfo[])>
                   (keepStrongly=projectCacheSize, keepMax=projectCacheSize, 
                    areSame =  FSharpProjectOptions.AreSameForChecking, 
                    areSimilar =  FSharpProjectOptions.UseSameProject)
   
  +    let tryGetBuilder options =
  +        incrementalBuildersCache.TryGet (AssumeAnyCallerThreadWithoutEvidence(), options)
  +
  +    let tryGetSimilarBuilder options =
  +        incrementalBuildersCache.TryGetSimilar (AssumeAnyCallerThreadWithoutEvidence(), options)
  +
  +    let tryGetAnyBuilder options =
  +        incrementalBuildersCache.TryGetAny (AssumeAnyCallerThreadWithoutEvidence(), options)
  +
       let getOrCreateBuilder (ctok, options, userOpName) =
         cancellable {
             RequireCompilationThread ctok
  -          match incrementalBuildersCache.TryGet (ctok, options) with
  +          match tryGetBuilder options with
             | Some (builderOpt,creationErrors) -> 
                 Logger.Log LogCompilerFunctionId.Service_IncrementalBuildersCache_GettingCache
                 return builderOpt,creationErrors
             | None -> 
                 Logger.Log LogCompilerFunctionId.Service_IncrementalBuildersCache_BuildingNewCache
                 let! (builderOpt,creationErrors) as info = CreateOneIncrementalBuilder (ctok, options, userOpName)
  -              incrementalBuildersCache.Set (ctok, options, info)
  +              incrementalBuildersCache.Set (AssumeAnyCallerThreadWithoutEvidence(), options, info)
                 return builderOpt, creationErrors
         }
   
       let getSimilarOrCreateBuilder (ctok, options, userOpName) =
           RequireCompilationThread ctok
  -        match incrementalBuildersCache.TryGetSimilar (ctok, options) with
  +        match tryGetSimilarBuilder options with
           | Some res -> Cancellable.ret res
           // The builder does not exist at all. Create it.
           | None -> getOrCreateBuilder (ctok, options, userOpName)
  
positive.code: 
      /// Clear the internal cache of the given projects.
      member __.ClearCache(options: FSharpProjectOptions seq, ?userOpName: string) =
          let userOpName = defaultArg userOpName "Unknown"
          backgroundCompiler.ClearCache(options, userOpName)
  
      /// This function is called when a project has been cleaned, and thus type providers should be refreshed.
      member __.NotifyProjectCleaned(options: FSharpProjectOptions, ?userOpName: string) =
  
negative.code:                 checkFileInProjectCachePossiblyStale.Resize(ltok, keepStrongly=1)
                  checkFileInProjectCache.Resize(ltok, keepStrongly=1)
                  parseFileCache.Resize(ltok, keepStrongly=1))
              incrementalBuildersCache.Resize(AssumeAnyCallerThreadWithoutEvidence(), keepStrongly=1, keepMax=1)
              frameworkTcImportsCache.Downsize(ctok)
              scriptClosureCacheLock.AcquireLock (fun ltok -> scriptClosureCache.Resize(ltok,keepStrongly=1, keepMax=1))
              cancellable.Return ())
  