anchor.diff:  open Farkle
   open Farkle.Grammar
   #if MODERN_FRAMEWORK
  +open System
   open System.Runtime.CompilerServices
   open System.Threading
   #endif
  
positive.code:     interface PostProcessorEventListener with
          member this.ParsingStarted() =
              if Interlocked.Increment(&invokeCount) = invocationThreshold then
                  ThreadPool.UnsafeQueueUserWorkItem(fSwitchToDynamic, this) |> ignore
  #endif
  
  [<RequiresExplicitTypeArguments>]
  
negative.code:     let mutable hasSwitchedToDynamic = 0
      [<Literal>]
      static let invocationThreshold = 3
      static let fSwitchToDynamic = Action<TieredPostProcessor<'T>>(fun x -> x.SwitchToDynamic())
      member private _.SwitchToDynamic() =
          if Interlocked.Exchange(&hasSwitchedToDynamic, 1) = 0 then
              try
  