anchor.diff:  
   (defbinding %font-options-create () pointer)
   
  -(defmethod initialize-instance ((font-options font-options) &rest initargs)
  +(defmethod allocate-foreign ((font-options font-options) &rest initargs)
     (declare (ignore initargs))
  -  (setf (foreign-location font-options) (%font-options-create))
  -  (call-next-method))
  +  (%font-options-create))
   
   (defbinding font-options-merge () nil
     (options1 font-options :return)
  
positive.code:   (ctm matrix)
    (options font-options))
  
  (defmethod initialize-instance ((scaled-font scaled-font) &key font-face font-matrix cmt options)
    (setf
     (foreign-location scaled-font)
     (%scaled-font-create font-face font-matrix cmt options))
    (call-next-method))
  
  
  
  
negative.code: ;; Image Surface
  
  ;; Should data be automatically freed when the surface is GCed?
  (defmethod allocate-foreign ((surface image-surface) 
  			     &key width height stride format data)
    (if (not data)
        (%image-surface-create format width height)
      (%image-surface-create-for-data data format width height 
       (or 
        stride
        (let ((element-size (cdr (assoc format '((:argb32 . 4) (:rgb24 . 4) (:a8 . 1) (:a1 1/8))))))
  	(ceiling (* width element-size)))))))
  
  
  (defbinding %image-surface-create () image-surface
  