anchor.diff:          transact (fun () -> values.AppendMany [4 .. 1 <<< 16])
           Log.stop()
           Log.startTimed "update"
  -        prog.Update(AdaptiveToken.Top)
  +        prog.Update()
           Log.stop()
           Log.startTimed "run"
           for i in 1 .. 1000 do
  -            Interlocked.Exchange(&all, 0L) |> ignore
               prog.Run()
           Log.line "dist: %A" prog.AverageJumpDistance
  -        Log.line "all:  %d" (Interlocked.Exchange(&all, 0L))
           Log.stop()
   
  +        Log.startTimed "run"
  +        prog.RunAndValidate()
  +        Log.stop()
  +
  +
  +
  +        Log.startTimed "apply"
  +        transact (fun () -> values.Clear())
  +        Log.stop()
  +        Log.startTimed "update"
  +        prog.Update()
  +        Log.stop()
  +        Log.startTimed "run"
  +        for i in 1 .. 1000 do
  +            prog.Run()
  +        Log.line "dist: %A" prog.AverageJumpDistance
  +        Log.stop()
  +
  +
  +
  +        Environment.Exit 0
           Log.line "last: %A" test.[(1 <<< 12) - 1]
  -        Environment.Exit 0
   
   
   open AMD64
  
positive.code: 
          let speedup = ot / nt
          Log.line "factor: %A" speedup
  
  
  module Test =
  
  
negative.code:                 jumpDistance := 0L
                  count <- 0
  
          member x.AverageJumpDistance = 
              if !jumpDistance = 0L then 0.0
              else float !jumpDistance / float count
  
          member x.TotalJumpDistance = !jumpDistance
  
          member x.Update(token : AdaptiveToken) =
  