anchor.diff:                  transact (fun () -> x.MarkOutdated ())
               res
   
  +        member x.Set(byteOffset : nativeint, src : IntPtr, byteCount : nativeint) =
  +            let e = byteOffset + byteCount
  +            if x.Store.SizeInBytes < e then
  +                x.Resize(Fun.NextPowerOfTwo(int64 e) |> nativeint)
  +
  +            x.Store.Upload(byteOffset, src, byteCount)
  +
           member x.Set(range : Range1l, value : byte[]) =
               let count = range.Size + 1L
               let e = nativeint(range.Min + count) * asize
  
positive.code:                         let last = calls.[lastIndex]
                          indices.[last] <- index
                          calls.[index] <- last
                          store.Set(index, prepareForUpload last)
                          calls.RemoveAt lastIndex
                          
                      true
  
negative.code: 
      let indices = Dict<DrawCallInfo, int>()
      let calls = List<DrawCallInfo>()
      let store = new ManagedBuffer<int>(runtime)
      
      let locked x (f : unit -> 'a) =
          lock x f
      
      // https://www.khronos.org/opengl/wiki/Vertex_Rendering#Indirect_rendering
  
      // non-indexed
      //typedef  struct {
      //   GLuint  count;
      //   GLuint  instanceCount;
      //   GLuint  first;
      //   GLuint  baseInstance;
      //} DrawArraysIndirectCommand;
  
      // indexed
      //typedef  struct {
      //    uint  count;
      //    uint  instanceCount;
      //    uint  firstIndex;
      //    uint  baseVertex;
      //    uint  baseInstance;
      //} DrawElementsIndirectCommand;
  
      let stride = if indexed then 20 else 16
      let upload (call : DrawCallInfo) (index : int) =
          let mutable c = call
          if indexed then
              Fun.Swap(&c.BaseVertex, &c.FirstInstance)
          let gc = GCHandle.Alloc(c, GCHandleType.Pinned)
          try
              let ptr = gc.AddrOfPinnedObject()
              store.Set(nativeint(stride * index), ptr, nativeint stride)
          finally
              gc.Free()
  
      let add x (call : DrawCallInfo) =
          locked x (fun () ->
  