anchor.diff:              
       override x.Compute(token) =
           let inner = store.GetValue(token)
  -        IndirectBuffer(inner, calls.Count, sizeof<DrawCallInfo>, indexed)
  +        IndirectBuffer(inner, calls.Count, stride, indexed)
   
       override x.Finalize() =
           try store.Dispose()
  
positive.code:                         let last = calls.[lastIndex]
                          indices.[last] <- index
                          calls.[index] <- last
                          store.Set(index, prepareForUpload last)
                          calls.RemoveAt lastIndex
                          
                      true
  
negative.code:                 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
  