anchor.diff:  ;; (defgeneric (setf* window-viewport-position) (x y window))
   
   ;;;;
  -
  +(defgeneric gadget-value (gadget))
  +(defgeneric (setf gadget-value) (new-value gadget &key invoke-callback))
  +(defgeneric gadget-min-value (gadget))
  +(defgeneric gadget-max-value (gadget))
   (defgeneric (setf gadget-max-value) (new-value gadget))
   (defgeneric (setf gadget-min-value) (new-value gadget))
   (defgeneric (setf scroll-bar-thumb-size) (new-value scroll-bar))
  
positive.code:   SLOT-ACCESSOR-NAME::|CLIM-INTERNALS CLIENT slot READER| DRAW-EDGES-LINES* 
    FORMAT-CHILDREN GADGET-VALUE MAKE-MENU-BAR TABLE-PANE-NUMBER 
  
  ||#
negative.code: (defmethod text-style-character-width (text-style medium char)
    (text-size medium char :text-style text-style))
  
  ;; Since the declaim form for functions looks clumsy and is
  ;; syntax-wise different from defun, we define us a new declfun, which
  ;; fixes this.
  
  (defmacro declfun (name lambda-list)
    `(declaim (ftype (function
                      ,(let ((q lambda-list)
                             res)
                            (do () ((or (null q)
                                        (member (car q) '(&optional &rest &key))))
                              (push 't res)
                              (pop q))
                            (when (eq (car q) '&optional)
                              (push '&optional res)
                              (pop q)
                              (do () ((or (null q)
                                          (member (car q) '(&rest &key))))
                                (push 't res)))
                            (when (eq (car q) '&rest)
                              (push '&rest res)
                              (pop q)
                              (push 't res)
                              (pop q))
                            (when (eq (car q) '&key)
                              (push '&key res)
                              (pop q)
                              (do () ((or (null q)
                                          (member (car q) '(&allow-other-keys))))
                                (push (list (intern (string (if (consp (car q))
                                                                (if (consp (caar q))
                                                                    (caaar q)
                                                                    (caar q))
                                                                (car q)))
                                                    :keyword)
                                            't)
                                      res)
                                (pop q)))
                            (when (eq (car q) '&allow-other-keys)
                              (push '&allow-other-keys res)
                              (pop q))
                            (reverse res))
                      t)
               ,name)))
  
  (declfun draw-rectangle (sheet point1 point2
                                 &rest args
                                 &key (filled t)
                                 ink clipping-region transformation line-style line-thickness
                                 line-unit line-dashes line-joint-shape))
  
  (declfun draw-rectangle* (sheet x1 y1 x2 y2
                                  &rest args
                                  &key (filled t)
                                  ink clipping-region transformation line-style line-thickness
                                  line-unit line-dashes line-joint-shape))
  
  ;;; "exported" from a port
  
  