anchor.diff:      let mutable mappedPtr = 0n
       let onDispose = new System.Reactive.Subjects.Subject<unit>()
   
  -    let mutable oldBuffers = []
  +    let mutable oldBuffers : int list = []
   
       let unmap () =
           GL.BindBuffer(BufferTarget.CopyWriteBuffer, buffer.Handle)
  
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: 
              if oldBuffer <> 0 then
                  Interlocked.Change(&oldBuffers, fun o -> oldBuffer::o) |> ignore
  
      member x.Write(sourcePtr, offset, size) =   
          if size + offset > int buffer.SizeInBytes then failwith "insufficient buffer size"
  