anchor.diff:          GL.BindBuffer(BufferTarget.CopyReadBuffer,0)
           GL.Check "[MappedBuffer] could unbind buffer"
           mappedPtr <- 0n
  +
  +    let deleteOldBuffers () =
  +        let delete = Interlocked.Exchange(&oldBuffers, [])
  +        if not (List.isEmpty delete) then
  +            using ctx.ResourceLock (fun _ ->
  +                for d in delete do 
  +                    GL.DeleteBuffer(d)
  +                    GL.Check "[MappedBuffer] could delete old buffer"
  +            )
   
       let resize (self : MappedBuffer) (newCapacity : int) =
           if nativeint newCapacity <> buffer.SizeInBytes then
  
positive.code:         res
  
      override x.Compute() =
          let delete = Interlocked.Exchange(&oldBuffers, [])
          if not (List.isEmpty delete) then
              using ctx.ResourceLock (fun _ ->
                  for d in delete do 
                      GL.DeleteBuffer(d)
                      GL.Check "[MappedBuffer] could delete old buffer"
              )
  
          buffer :> IBuffer
  
  
negative.code:     let mutable mappedPtr = 0n
      let onDispose = new System.Reactive.Subjects.Subject<unit>()
  
      let mutable oldBuffers : int list = []
  
      let unmap () =
          GL.BindBuffer(BufferTarget.CopyWriteBuffer, buffer.Handle)
  