anchor.diff:  /// defines a base class for all adaptive objects implementing
   /// IAdaptiveObject.
   /// </summary>
  -type AdaptiveObject() =
  -    static let EvaluationOverheadProbe = Symbol.Create "[Adaptive] eval"
  -    let id = newId()
  -    let mutable outOfDate = true
  -    let mutable level = 0
  -    let outputs = VolatileCollection<IAdaptiveObject>()
  -
  -    static let time = AdaptiveObject() :> IAdaptiveObject
  +type AdaptiveObject =
  +    class
  +        [<DefaultValue>]
  +        static val mutable private time : IAdaptiveObject 
  +        val mutable public Id : int
  +        val mutable public OutOfDate : bool
  +        val mutable public Level : int 
  +        val mutable public Outputs : VolatileCollection<IAdaptiveObject>
  +
  +        new() =
  +            { Id = newId(); OutOfDate = true; 
  +              Level = 0; Outputs = VolatileCollection<IAdaptiveObject>() }
  +
       
  -    member inline private this.evaluate (caller : IAdaptiveObject) (otherwise : Option<'a>) (f : unit -> 'a) =
  -        Telemetry.timed EvaluationOverheadProbe (fun () ->
  -            let depth = curerntEvaluationDepth.Value
  +        member inline this.evaluate (caller : IAdaptiveObject) (otherwise : Option<'a>) (f : unit -> 'a) =
  +            let depth = AdaptiveSystemState.curerntEvaluationDepth.Value
               let top = isNull caller && !depth = 0 && not Transaction.HasRunning
   
   
  
positive.code:                         // This property must therefore be maintained for every
                          // path in the entire system.
                          let r = f()
                          outOfDate <- false
  
                          // if the object's level just got greater than or equal to
                          // the level of the running transaction (if any)
  
negative.code:                 Monitor.Exit this
  
              if top then 
                  let time = AdaptiveObject.Time
                  Monitor.Enter time
                  if not time.Outputs.IsEmpty then
                      let outputs = time.Outputs.Consume()
  