anchor.diff:  
   module Farkle.Tools.Precompiler
   
  +#if !NETFRAMEWORK
   open Farkle.Builder
   open Farkle.Common
   open Farkle.Grammar
   open Mono.Cecil
   open Serilog
  -open System
   open System.IO
  -open System.Reflection
   open System.Runtime.CompilerServices
  +open System.Runtime.Loader
   
  -type private LoggerWrapper(log: ILogger) =
  -    inherit MarshalByRefObject()
  -    override _.InitializeLifetimeService() = null
  -    member _.Verbose(template) = log.Verbose(template)
  -    member _.Information(template, [<ParamArray>] args: _ []) = log.Information(template, args)
  -    member _.Error(template, [<ParamArray>] args: _ []) = log.Error(template, args)
  -
  -let private dynamicDiscoverAndPrecompile asm (log: LoggerWrapper) =
  +let private dynamicDiscoverAndPrecompile asm (log: ILogger) =
       asm
       |> Precompiler.Discoverer.discover
       |> List.map (fun pcdf ->
  
positive.code:         |> readOnlyDict
      let asm =
          let bytes = File.ReadAllBytes path
          let m = new MemoryStream(bytes, true)
          this.LoadFromStream m
      member _.TheAssembly = asm
      override this.Load(name) =
  
negative.code:         | Error msg -> Error(string msg)
          |> (fun x -> name, x))
  
  let private isReferenceAssembly (asm: AssemblyDefinition) =
      asm.CustomAttributes
      |> Seq.exists (fun attr ->
          attr.AttributeType.FullName = typeof<ReferenceAssemblyAttribute>.FullName)
  
  type private PrecompilerContext(path, references: string seq, log: ILogger) as this =
      inherit AssemblyLoadContext(sprintf "Farkle.Tools precompiler for %s" path, true)
      let dict =
          references
  