anchor.diff:          let ilModule, ilAssemblyRefs, pdb = openPE (fullPath, pefile, opts.pdbDirPath, reduceMemoryUsage, opts.ilGlobals, false)
           let ilModuleReader = new ILModuleReaderImpl(ilModule, ilAssemblyRefs, (fun () -> ClosePdbReader pdb))
   
  +        let ilModuleReader = ilModuleReader :> ILModuleReader 
  +
           // Readers with PDB reader disposal logic don't go in the cache. Note the PDB reader is only used in static linking.
           if keyOk && opts.pdbDirPath.IsNone then 
  -            ilModuleReaderCacheLock.AcquireLock (fun ltok -> ilModuleReaderCache.Put(ltok, key, ilModuleReader))
  -
  -        ilModuleReader :> ILModuleReader
  +            ilModuleReaderCache1Lock.AcquireLock (fun ltok -> ilModuleReaderCache1.Put(ltok, key, ilModuleReader))
  +            ilModuleReaderCache2.[key] <- WeakReference<_>(ilModuleReader)
  +
  +        ilModuleReader
   
   [<AutoOpen>]
   module Shim =
  
positive.code: #nowarn "42" // This construct is deprecated: it is only for use in the F# library
  
  open System
  open System.Collections.Generic
  open System.Diagnostics
  open System.IO
  
negative.code:     let inbase = Filename.fileNameOfPath fileName + ": "
  
      // All the caches. The sizes are guesstimates for the rough sharing-density of the assembly 
      let cacheAssemblyRef = mkCacheInt32 false inbase "ILAssemblyRef" (getNumRows TableNames.AssemblyRef)
      let cacheMethodSpecAsMethodData = mkCacheGeneric reduceMemoryUsage inbase "MethodSpecAsMethodData" (getNumRows TableNames.MethodSpec / 20 + 1)
      let cacheMemberRefAsMemberData = mkCacheGeneric reduceMemoryUsage inbase "MemberRefAsMemberData" (getNumRows TableNames.MemberRef / 20 + 1)
      let cacheCustomAttr = mkCacheGeneric reduceMemoryUsage inbase "CustomAttr" (getNumRows TableNames.CustomAttribute / 50 + 1)
      let cacheTypeRef = mkCacheInt32 false inbase "ILTypeRef" (getNumRows TableNames.TypeRef / 20 + 1)
      let cacheTypeRefAsType = mkCacheGeneric reduceMemoryUsage inbase "TypeRefAsType" (getNumRows TableNames.TypeRef / 20 + 1)
      let cacheBlobHeapAsPropertySig = mkCacheGeneric reduceMemoryUsage inbase "BlobHeapAsPropertySig" (getNumRows TableNames.Property / 20 + 1)
      let cacheBlobHeapAsFieldSig = mkCacheGeneric reduceMemoryUsage inbase "BlobHeapAsFieldSig" (getNumRows TableNames.Field / 20 + 1)
  