anchor.diff:  (defmethod text-style-character-width (text-style medium char)
     (text-size medium char :text-style text-style))
   
  -(declaim (ftype (function (t t t
  -                             &key (:filled t) (:ink t) (:clipping-region t) (:transformation t)
  -                             (:line-style t) (:line-thickness t) (:line-unit t) (:line-dashes t)
  -                             (:line-joint-shape t))
  -                          t)
  -                draw-rectangle))
  -
  -(declaim (ftype (function (t t t t t
  -                             &key (:filled t) (:ink t) (:clipping-region t) (:transformation t)
  -                             (:line-style t) (:line-thickness t) (:line-unit t) (:line-dashes t)
  -                             (:line-joint-shape t))
  -                          t)
  -                draw-rectangle*))
  +;; 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
   
  
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: ;; (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))
  