anchor.diff:      static let emptyArray : IAdaptiveObject[] = Array.empty
       let mutable outputs = emptyArray
   
  +
       // each thread may have its own running transaction
       static let running = new TrackAllThreadLocal<Option<Transaction>>(fun () -> None)
       
  
positive.code:             // running transaction (if any)
              running.Value <- old
              currentLevel <- 0
          )
  
  
  
  type private EmptyCollection<'a>() =
  
negative.code:         /// is not marked as outOfDate.
          /// Note that this function takes care of appropriate locking
          /// </summary>
          member x.EvaluateAlways (caller : IAdaptiveObject) (f : unit -> 'a) =
              x.evaluate caller None f
  
          abstract member Mark : unit -> bool
  