anchor.diff:                  typeof<DynamicDiscoverer>.FullName,
                   [|logw|])
               |> unbox<DynamicDiscoverer>
  -        theHeroicPrecompiler.GetPrecompilableGrammars path
  +        theHeroicPrecompiler.GetPrecompilableGrammars path, WeakReference(obj())
       finally
           AppDomain.Unload(ad)
       #else
  -    let mutable alc = FarkleAwareAssemblyLoadContext(path) :> AssemblyLoadContext
  +    let alc = FarkleAwareAssemblyLoadContext(path) :> AssemblyLoadContext
       try
           let asm = alc.LoadFromAssemblyPath path
           for r in references do
               r |> Path.GetFullPath |> alc.LoadFromAssemblyPath |> ignore
  -        getPrecompilableGrammarsImpl asm logw
  +        getPrecompilableGrammarsImpl asm logw, WeakReference(alc)
       finally
  -        let wr = WeakReference(alc)
           alc.Unload()
  -        alc <- null
  -        ensureUnloaded log wr
       #endif
   
   let weaveAssembly pcdfs (asm: AssemblyDefinition) =
  
positive.code:             // This is great news.
              log.Debug("The assembly context was not collected after {GCTries} attempts! \
  Writing to the assembly might fail.", 10 - i)
  #endif
  
  [<MethodImpl(MethodImplOptions.NoInlining)>]
  
negative.code:     not pcdfs.IsEmpty
  
  let precompile log path output = either {
      let pcdfs, wr = getPrecompilableGrammars log ["Chiron.dll"; "FsLexYacc.Runtime.dll"] path
      let! pcdfs = pcdfs
      #if !NET472
      ensureUnloaded log wr
      #endif
  
      do!
          pcdfs
  