anchor.diff:              let fakeKey = ILModuleReaderCacheKey(fileName, System.DateTime.UtcNow, ILScopeRef.Local, false, ReduceMemoryFlag.Yes, MetadataOnlyFlag.Yes)
               fakeKey, false
   
  -    let cacheResult1 = 
  -        // can't used a cached entry when reading PDBs, since it makes the returned object IDisposable
  -        if keyOk && opts.pdbDirPath.IsNone then 
  -            ilModuleReaderCache1Lock.AcquireLock (fun ltok -> ilModuleReaderCache1.TryGet(ltok, key))
  +    let cacheResult = 
  +        if keyOk then 
  +            if opts.pdbDirPath.IsSome then None // can't used a cached entry when reading PDBs, since it makes the returned object IDisposable
  +            else ilModuleReaderCacheLock.AcquireLock (fun ltok -> ilModuleReaderCache.TryGet(ltok, key))
           else 
               None
  -    
  -    match cacheResult1 with 
  +
  +    match cacheResult with 
       | Some ilModuleReader -> ilModuleReader
       | None -> 
  -
  -    let cacheResult2 = 
  -        // can't used a cached entry when reading PDBs, since it makes the returned object IDisposable
  -        if keyOk && opts.pdbDirPath.IsNone then 
  -            ilModuleReaderCache2.TryGetValue(key)
  -        else 
  -            false, Unchecked.defaultof<_>
  -
  -    let mutable res = Unchecked.defaultof<_> 
  -    match cacheResult2 with 
  -    | true, weak when weak.TryGetTarget(&res) -> res
  -    | _ -> 
   
       let reduceMemoryUsage = (opts.reduceMemoryUsage = ReduceMemoryFlag.Yes)
       let metadataOnly = (opts.metadataOnly = MetadataOnlyFlag.Yes) 
  
positive.code: #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
  
negative.code:                 let ilModule, ilAssemblyRefs, _pdb = openPE (fullPath, pefile, None, reduceMemoryUsage, opts.ilGlobals, false) 
                  new ILModuleReaderImpl(ilModule, ilAssemblyRefs, ignore)
  
          if keyOk then 
              ilModuleReaderCacheLock.AcquireLock (fun ltok -> ilModuleReaderCache.Put(ltok, key, ilModuleReader))
  
          ilModuleReader :> ILModuleReader
                  
      else
          // This case is primarily used in fsc.exe. 
  