anchor.diff:  #nowarn "42" // This construct is deprecated: it is only for use in the F# library
   
   open System
  +open System.Collections.Concurrent
   open System.Collections.Generic
   open System.Diagnostics
   open System.IO
  
positive.code:         member x.Dispose() = dispose()
      
  // ++GLOBAL MUTABLE STATE (concurrency safe via locking)
  type ILModuleReaderCacheLockToken() = interface LockToken
  type ILModuleReaderCacheKey = ILModuleReaderCacheKey of string * DateTime * ILScopeRef * bool * ReduceMemoryFlag * MetadataOnlyFlag
  let ilModuleReaderCache = new AgedLookup<ILModuleReaderCacheLockToken, ILModuleReaderCacheKey, ILModuleReader>(stronglyHeldReaderCacheSize, areSimilar=(fun (x, y) -> x = y))
  let ilModuleReaderCacheLock = Lock()
  
  let stableFileHeuristicApplies fileName = 
      not noStableFileHeuristic && try FileSystem.IsStableFileHeuristic fileName with _ -> false
  
negative.code:                 let ilModule, ilAssemblyRefs, _pdb = openPE (fullPath, pefile, None, reduceMemoryUsage, opts.ilGlobals, false) 
                  new ILModuleReaderImpl(ilModule, ilAssemblyRefs, ignore)
  
          let ilModuleReader = ilModuleReader :> ILModuleReader 
          if keyOk then 
              ilModuleReaderCache1Lock.AcquireLock (fun ltok -> ilModuleReaderCache1.Put(ltok, key, ilModuleReader))
              ilModuleReaderCache2.[key] <- System.WeakReference<_>(ilModuleReader)
          ilModuleReader
          
                  
      else
          // This case is primarily used in fsc.exe. 
  