anchor.diff:      let pReport = Marshal.PinDelegate(report)
   
   
  +    let runInsertBenchmark() =
  +        let values = clist [0;1;2;3]
  +        let prog = TestProgram(values)
  +        let log = @"C:\Users\Schorsch\Desktop\update.csv"
  +        File.WriteAllLines(log, ["size;apply;update;run"])
  +        for s in 500 .. 500 .. 100000 do
  +            printf "%d: " s
  +            transact (fun () -> values.Clear())
  +            prog.Update()
  +
  +            let sw = System.Diagnostics.Stopwatch.StartNew()
  +            transact (fun () -> values.AppendMany [1 .. s])
  +            sw.Stop()
  +            let apply = sw.MicroTime
  +            sw.Restart()
  +            prog.Update()
  +            sw.Stop()
  +            let update = sw.MicroTime
  +            sw.Restart()
  +            for i in 1 .. 1000 do
  +                prog.Run()
  +            sw.Stop()
  +            let run = sw.MicroTime / 1000.0
  +
  +
  +            printfn "{ apply: %A; update: %A; run: %A }" apply update run
  +            File.AppendAllLines(log, [sprintf "%d;%d;%d;%d" s apply.TotalNanoseconds update.TotalNanoseconds run.TotalNanoseconds])
  +
  +        Environment.Exit(0)
  +
       let test() =
  +        if sizeof<nativeint> = 4 then Log.warn "32 bit"
  +        else Log.warn "64 bit"
  +
           let values = clist [0;1;2;3]
           let prog = TestProgram(values)
   
  
positive.code: 
              member x.WriteOutput(v : nativeint) = x.Mov(Register.Eax, v)
              member x.WriteOutput(v : int) = x.Mov(Register.Eax, v)
              member x.WriteOutput(v : float32) : unit = failwith "asdasd"
  
  
          new(stream : Stream) = new AssemblerStream(stream, false)
  
negative.code:                     x.JumpDistance <- dist
  
                      let off = x.Pointer.Size - jumpSize |> int
                      x.Pointer.Write(off, jumpInt)
                      x.Pointer.Write(off + jumpInt.Length, offset)
                  else
                      Interlocked.Add(x.TotalJumpDistance, -x.JumpDistance) |> ignore
                      x.JumpDistance <- 0L
  
                      let off = x.Pointer.Size - jumpSize |> int
                      x.Pointer.Write(off, ret)
                      
  
  
  