anchor.diff:          | DiscoveringFailed(typeName, fieldName, e) ->
               log.Error("Exception thrown while getting the value of field {TypeName:l}.{FieldName:l}:", typeName, fieldName)
               log.Error("{Exception:l}", e)
  -            None)
  +            None), alcWeakReference
  +
  +
  +let precompileAssemblyFromPath ct log fCreateConflictReport errorMode references path =
  +    let grammars, alcWeakReference =
  +        precompileAssemblyFromPathImpl ct log fCreateConflictReport errorMode references path
  +    ensureWeakReferenceIsCollected log alcWeakReference 5u
  +
  +    grammars
   
   let weaveGrammars (asm: AssemblyDefinition) (precompiledGrammars: _ list) =
       use stream = new MemoryStream()
  
positive.code:         fCreateConflictReport report
      | _ -> ()
  
  let precompileAssemblyFromPath ct log fCreateConflictReport errorMode references path =
      let results, alcWeakReference = precompileAssemblyFromPathIsolated ct log references path
      ensureWeakReferenceIsCollected log alcWeakReference 5u
  
      checkForDuplicates log results
      results
      |> List.choose (fun x ->
          match x with
  
negative.code:             impl (remainingTries - 1u)
      impl numberOfTries
  
  let private precompileAssemblyFromPathIsolated ct log references path =
      let alc = PrecompilerContext(path, references, log)
      let wr = WeakReference(alc)
  