anchor.diff:                  (with-foreign-string (name "alfa")
                     (let ((kernel (create-kernel program name)))
                       (ok kernel "create kernel")
  -                    (with-foreign-object (p :pointer)
  -                      (setf (mem-aref p :pointer) buffer)
  -                      (is-success (cl-set-kernel-arg kernel 0 8 p) "set kernel arg")
  +                    (with-foreign-objects ((p-in :pointer)
  +                                           (p-out :pointer))
  +                      (setf (mem-aref p-in :pointer) buffer-in)
  +                      (setf (mem-aref p-out :pointer) buffer-out)
  +                      (is-success (cl-set-kernel-arg kernel 0 8 p-out) "set kernel arg")
  +                      (is-success (cl-set-kernel-arg kernel 1 8 p-in) "set kernel arg")
                         (let ((command-queue (create-command-queue context device 0)))
                           (ok command-queue "create command queue")
  +                        (with-foreign-object (value 'cl-char)
  +                          (setf (mem-aref value 'cl-char) 1)
  +                          (enqueue-write-buffer command-queue buffer-in 1 0 1 value)
  +                          (setf (mem-aref value 'cl-char) 2)
  +                          (enqueue-write-buffer command-queue buffer-out 1 0 1 value))
                           (with-foreign-objects ((global-work-size 'size-t 3)
                                                  (local-work-size 'size-t 3))
                             (set-work-size global-work-size 1)
  
positive.code:                         (is-success (cl-finish command-queue) "finish")
                          (with-foreign-object (value 'cl-char)
                            (setf (mem-aref value 'cl-char) 0)
                            (enqueue-read-buffer command-queue
                                                 buffer
                                                 0
                                                 0
                                                 1
                                                 value)
                            (is-success (cl-finish command-queue) "finish")
                            (is 1 (mem-aref value 'cl-char) "result"))
                          (is-success (cl-release-command-queue command-queue) "release command queueu")))
                      (is-success (cl-release-kernel kernel) "release kernel")))
                  (is-success (cl-release-program program) "release program"))))
            (is-success (cl-release-mem-object buffer) "release mem object"))
          (is-success (cl-release-context context) "release context")
          (is-success (cl-release-device device) "release device")))))
  
  
negative.code: (plan nil)
  
  (defparameter *copy-kernel*
    "__kernel void alfa(__global char * a, __global char * b) { a[0] = b[0]; }")
  
  (subtest "Copy buffer"
    (with-foreign-objects ((devices 'cl-device-id)
  