anchor.diff:  (defbinding (restore-context "cairo_restore") () nil
     (cr context))
   
  -(defmacro with-context ((cr) &body body)
  -  (let ((context (make-symbol "CONTEXT")))
  +(defmacro with-context ((cr &optional var) &body body)
  +  (let ((context (or var (make-symbol "CONTEXT"))))
       `(let ((,context ,cr))
          (save-context ,context)
          (unwind-protect
  
positive.code:   (define-enum-type subpixel-order :default :rgb :bgr :vrgb :vbgr)
    (define-enum-type hint-style :default :none :slight :medium :full)
    (define-enum-type hint-metrics :default :off :on)
  
    (defclass glyph (struct)
      ((index 
  
negative.code: 
  ;;; Surfaces
  
  (defmethod make-proxy-instance :around ((class surface-class) location 
  					&rest initargs)
    (let ((class (find-class (%surface-get-type location))))
      (apply #'call-next-method class location initargs)))
  
  (defbinding %surface-get-type () surface-type
    (location pointer))
  
  (defbinding %surface-reference () pointer
    (location pointer))
  
  (defbinding %surface-destroy () nil
    (location pointer))
  
  (defmethod reference-function ((class surface-class))
    (declare (ignore class))
    #'%surface-reference)
  
  (defmethod unreference-function ((class surface-class))
    (declare (ignore class))
    #'%surface-destroy)
  
  (defbinding %surface-set-user-data (surface key data-id) status
    (surface pointer)
    ((quark-intern key) pointer-data)
    (data-id pointer-data)
    (user-data-destroy-callback callback))
  
  (defmethod (setf user-data) (data (surface surface) key)
    (%surface-set-user-data (foreign-location surface) key (register-user-data data))
    data)
  
  (defbinding %surface-get-user-data () pointer-data
    (surface surface)
    (key pointer-data))
  
  (defmethod user-data ((surface surface) key)
    (find-user-data (%surface-get-user-data surface (quark-intern key))))
  
  (defbinding surface-create-similar () surface
    (other surface)
  