anchor.diff:      member x.Update() =
           let dirtySet = 
               lock l (fun () ->
  -                let dirty = set |> Seq.toArray
  +                let dirtySet = set |> Seq.toArray
                   set.Clear()
  -                dirty
  +
  +                for d in dirtySet do
  +                    let cb = dirty d
  +                    callbacks.[d] <- cb
  +                    d.MarkingCallbacks.Add cb |> ignore
  +
  +                dirtySet
               )
   
           sw.Restart()
  
positive.code:             lock d (fun () ->
                  resTime <- resTime + ( d |> Mod.force )
                  count <- count + 1
                  let cb = dirty d
                  callbacks.[d] <- cb
                  d.MarkingCallbacks.Add cb |> ignore
              )
          sw.Stop()
          count, sw.Elapsed, resTime
  
negative.code:         let dirtyResoruces = 
              lock l (fun () ->
                  
                  let dirtySet = set |> Seq.toArray
                  set.Clear()
  
                  for d in dirtySet do
                      let cb = dirty d
                      callbacks.[d] <- cb
                      d.MarkingCallbacks.Add cb |> ignore
  
                  dirtySet
              )
          sw.Restart()
          let mutable count = 0
  