anchor.diff:                                      parameter.IsReturned,
                                       true,
                                       queue.Device)
  -        //Console.WriteLine("Access analysis says this parameter is: " + parameter.AccessAnalysis.ToString())
  -        //Console.WriteLine("Best Memory Flags: " + mergedFlags.ToString())
  -        //Console.WriteLine("Best Read Mode: " + readMode.ToString())
  -        //Console.WriteLine("Best Write Mode: " + writeMode.ToString())
  -        
           if retArr.IsSome then
               //Console.WriteLine("Returned buffer is TRACKED")
               // A tracked buffer remains tracked
  
positive.code:                 trackedBufferPool.[arr] <- bufferItem          
                  reverseTrackedBufferPool.Add(bufferItem.Buffer, arr)
                  bufferItem.Buffer
          else
              //Console.WriteLine("No buffer found, create it")   
              // Create a buffer tracking the parameter
              let dataHandle = new HostSideDataHandle(arr)
              if BufferStrategies.IsBufferRequiringHostPtr(BufferStrategies.ToOpenCLMemoryFlags(mergedFlags)) then
                  dataHandle.BeforeTransferToDevice()
  
  
negative.code:             else
                  if ptr <> IntPtr.Zero then
                      Marshal.FreeHGlobal(ptr)
  
  [<AllowNullLiteral>]
  type BufferPoolItem(buffer: OpenCLBuffer, 
  