anchor.diff:              let all = lock readers (fun () -> readers |> HashSet.toArray)
               all |> Array.iter (fun reader -> reader.AddDirty r)
               
  -        member x.Capacity = capacity
  -
  -        member x.Resize(newCapacity : nativeint) =
  +        member x.Capacity = capacity / nativeint elementSize
  +
  +        member x.Resize(newLength : nativeint) =
  +            let newCapacity = nativeint elementSize * newLength
  +
               let changed = 
                   ReaderWriterLock.write rw (fun () ->
                       if newCapacity = 0n then
  
positive.code:         mutable VertexAttributes    : IAttributeProvider
                  
          mutable Uniforms : IUniformProvider
      }  
      interface IRenderObject with
          member x.RenderPass = x.RenderPass
  
negative.code:             addDirty (Range1i.FromMinAndSize(int offset, int size - 1))
              transact (fun () -> x.MarkOutdated())
  
          member x.Write(offset : int, data : Array) =
              x.Write(offset, data, data.Length)
  
          member x.Dispose() =
              x.Resize(0n)
              rw.Dispose()
              lock readers (fun () -> readers.Clear())
  
          override x.Compute() =
              NativeMemoryBuffer(storage, int capacity) :> IBuffer
  
  