anchor.diff:      static let emptyArray : IAdaptiveObject[] = Array.empty
       let mutable outputs = emptyArray
   
  +#if DEBUG
  +    let mutable isDisposed = false
  +#endif
  +
   
       // each thread may have its own running transaction
       static let running = new TrackAllThreadLocal<Option<Transaction>>(fun () -> None)
  
positive.code:     /// enqueues an adaptive object for marking
      /// </summary>
      member x.Enqueue(e : IAdaptiveObject) =
          Telemetry.timed EnqueueProbe (fun () ->
              if contained.Add e then
                  q.Enqueue e
          )
  
      member x.Enqueue(e : IAdaptiveObject, cause : Option<IAdaptiveObject>) =
          Telemetry.timed EnqueueProbe (fun () ->
              if contained.Add e then
                  q.Enqueue e
  
negative.code:     /// the enqueued changes.
      /// </summary>
      member x.Commit() =
  
  #if DEBUG
          if isDisposed then failwith "Invalid Commit Transaction already disposed."
  #endif
  
          Telemetry.timed CommitProbe (fun () ->
              // cache the currently running transaction (if any)
              // and make tourselves current.
  