anchor.diff:  /// </summary>
   exception LevelChangedException of IAdaptiveObject
   
  +[<AutoOpen>]
  +module private AdaptiveSystemState =
  +    let isTopLevel = new System.Threading.ThreadLocal<bool>(fun () -> true)
  +
   /// <summary>
   /// Transaction holds a set of adaptive objects which
   /// have been changed and shall therefore be marked as outOfDate.
  
positive.code:     let outputs = WeakSet<IAdaptiveObject>() :> ICollection<_>
      let callbacks = ConcurrentHashSet<unit -> unit>() :> ICollection<_>
  
      static let isTopLevel = new System.Threading.ThreadLocal<bool>(fun () -> true)
      static let time = AdaptiveObject() :> IAdaptiveObject
  
      static member Time = time
  
negative.code:     /// the enqueued changes.
      /// </summary>
      member x.Commit() =
          let top = isTopLevel.Value
          isTopLevel.Value <- false
  
  
          // cache the currently running transaction (if any)
          // and make tourselves current.
          let old = running.Value
  