anchor.diff:                              // 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)
  
positive.code: module Marking =
  
  
  
      // changes the level of an adaptive object if it is below
      // minLevel and transitively changes all outputs if needed.
      // Note that this implementation has very poor runtime performance
      // and might possibly be improved using some kind of order-maintenance
      // structure instead of integers.
      let rec relabel (m : IAdaptiveObject) (minLevel : int) =
          let old = m.Level
          if old < minLevel then
              m.Level <- minLevel
              for o in m.Outputs.Seq do
                  relabel o (minLevel + 1) |> ignore
              old <> -1
          else
              false
  
      // since changeable inputs need a transaction
      // for enqueing their changes we use a thread local 
  
negative.code:                                 else Transaction.RunningLevel
  
                              if level > maxAllowedLevel then
                                  // all greater pulls would be from the future
                                  raise <| LevelChangedException(this, level, stack.Count - 1)
  
  
  