anchor.diff:  #| Context APIs |#
   
   @export
  -(defmacro with-context ((context
  -                         properties
  -                         num-devices
  -                         devices
  -                         &optional
  -                           (pfn-notify (null-pointer))
  -                           (user-data (null-pointer)))
  -                        &body body)
  +(defmacro with-context ((context properties num-devices devices &optional pfn-notify user-data) &body body)
     `(let ((,context (create-context ,properties
                                      ,num-devices
                                      ,devices
  -                                   ,pfn-notify
  -                                   ,user-data)))
  +                                   (or ,pfn-notify (null-pointer))
  +                                   (or ,user-data (null-pointer)))))
        (unwind-protect
             (progn
               ,@body)
  
positive.code: #| Program Object APIs  |#
  
  @export
  (defmacro with-program-with-source ((program context count source &optional (lengths (null-pointer))) &body body)
    (with-gensyms (string pointer)
      `(with-foreign-string (,string ,source)
         (with-foreign-object (,pointer :pointer)
           (setf (mem-aref ,pointer :pointer) ,string)
           (let ((,program (create-program-with-source ,context ,count ,pointer ,lengths)))
             (unwind-protect
                  (progn
                    ,@body)
  
negative.code: #| Memory Object APIs |#
  
  @export
  (defmacro with-buffer ((name context flags size &optional host-ptr) &body body)
    `(let ((,name (create-buffer ,context
                                 ,flags
                                 ,size
                                 (or ,host-ptr (null-pointer)))))
       (unwind-protect
            (progn
              ,@body)
  