anchor.diff:      | _ -> ()
   
   let precompileAssemblyFromPath ct log fCreateConflictReport errorMode references path =
  -    let pcdfs = precompileAssemblyFromPathIsolated ct log references path
  +    let pcdfs, alcWeakReference = precompileAssemblyFromPathIsolated ct log references path
  +    ensureWeakReferenceIsCollected log alcWeakReference 5u
       checkForDuplicates log pcdfs
       |> Result.map (List.choose (fun x ->
           match x with
           | Successful grammar ->
               Some grammar
           | PrecompilingFailed(name, grammarDef, errors) ->
  -            handlePrecompilerErrors log (fCreateConflictReport grammarDef) errorMode name errors
  +            handleGrammarErrors log (fCreateConflictReport grammarDef) errorMode name errors
               None
           | DiscoveringFailed(typeName, fieldName, e) ->
               log.Error("Exception thrown while getting the value of field {TypeName:l}.{FieldName:l}:", typeName, fieldName)
  
positive.code:                 this.LoadFromAssemblyPath path
              | false, _ -> null
  
  [<MethodImpl(MethodImplOptions.NoInlining)>]
  let private precompileAssemblyFromPathIsolated ct log references path =
      let alc = PrecompilerContext(path, references, log)
      try
          let asm = alc.TheAssembly
          if asm.GetName().Name = typeof<DesigntimeFarkle>.Assembly.GetName().Name then
  
negative.code:         else
              discoverPrecompilableDesigntimeFarkles log asm
              |> List.map (precompileDiscovererResult ct log)
          , wr
      finally
          alc.Unload()
  
  