anchor.diff:              if hasBeenPromoted || BufferStrategies.ShouldExplicitlyReadToReadBackBuffer(poolItem.AccessAnalysis, poolItem.Buffer.Flags, poolItem.AddressSpace, poolItem.DeviceToHostTransferMode) then
                   // No need to READ to unmanaged pointer
                   BufferTools.ReadBuffer(poolItem.Queue, poolItem.ReadMode = BufferReadMode.MapBuffer, poolItem.HostDataHandle.Value.Ptr, poolItem.Buffer, poolItem.HostDataHandle.Value.Lenghts)                
  +            // Now make sure the managed data is in sync with the possible unmanaged ptr
               poolItem.HostDataHandle.Value.SyncManagedWithUnmanaged()
                   
       member private this.PromoteUntrackedToTracked(poolItem: BufferPoolItem) =
  
positive.code:             else
                  if ptr <> IntPtr.Zero then
                      Marshal.FreeHGlobal(ptr)
              
  
  [<AllowNullLiteral>]
  type BufferPoolItem(buffer: OpenCLBuffer, 
  
negative.code:                 trackedBufferPool.[arr] <- bufferItem          
                  reverseTrackedBufferPool.Add(bufferItem.Buffer, arr)
                  bufferItem.Buffer
          else 
              // Create a buffer tracking the parameter
              let dataHandle = new HostSideDataHandle(arr)
  
              // If the ptr to data is required to create the buffer, prepare it
              if BufferStrategies.IsBufferRequiringHostPtr(BufferStrategies.ToOpenCLMemoryFlags(mergedFlags)) then
                  dataHandle.BeforeTransferToDevice()
  
  