anchor.diff:  ;;
   ;; - RAISED-PANE, where form? --GB
   ;;
  +
  +;; - In XBOX-PANE: I would like to also allow for (1 <pane>) being a
  +;;   proportional content.
  +
  +
  +;;;; TODO
  +
  +;; - VBOX/HBOX/VRACK/HRACK:
  +;;   . should align its children
  +;;     Q: Should we cope with proportional content differently?
  +;;   . test units for spacing and fixed width
  +;;     Q: When to resolve?
  +;;   . adopt/disown/enable/disable
  +;;
  +;; - TABLE-PANE
  +;;   . test units
  +;;   . adopt/disown/enable/disable
  +;;   . x-spacing, y-spaceing
  +;;   . allow for partially filled rows/cols?
  +;;   
  +;; - GRID-PANE
  +;;   . align children
  +;;   . inherit from table-pane?
  +;;   . test units
  +;;   . adopt/disown/enable/disable
  +;;   . x-spacing, y-spaceing
  +;;
  +;; - SPACING-PANE
  +;;   . align child
  +;;     Or: expand them as we did?
  +;;   . adopt/disown/enable/disable
  +;;
  +;; - RESTRAINIG-PANE
  +;;   . ???
  +;;
  +;; - LABEL-PANE
  +;;   . test units
  +;;   . adopt/disown/enable/disable
  +;;   . expand child? leave it?
  +;; 
  +;; - SCROLLER-PANE
  +;;   . much!
  +;;
  +;; - CHANGE-SPACE-REQUIREMENTS et al
  +;;
  +;; - we still need to think about what should happen when children
  +;;   get disabled or adopted or disowned.
  +;;
  +;; - adjust class names.
  +;;
  +;; - advertise layout-child et al
  +;;
  +;; - reuse single-child-composite-pane
  +;;
  +;; - MAKE-SPACE-REQUIREMENT right?
  +;;   . default arguments in the spec are different
  +;;   . DUIM's default for maxima is not +fill+ but the dimension
  +;;
  +;; - what are the appropriate default values for align?
  +;;--GB 2002-02-27
   
   ;;; GENERIC FUNCTIONS
   
  
positive.code: 
  (defclass composite-pane (sheet-multiple-child-mixin
  			  basic-pane)
    ((contents :initform nil :initarg :contents))
    (:documentation "protocol class"))
  
  (defclass content ()
    ((pane       :initarg :pane
                 :initform nil
                 :reader content-pane
                 :type (or pane null)
                 :documentation "The particular pane, this content specifiction belongs to."))
    (:documentation
     "This class represents one item of composite-pane's contents list."))
  
  (defmethod initialize-instance :after ((pane composite-pane)
  				       &rest args
  				       &key contents
  				       &allow-other-keys)
    (declare (ignore args))
    (setf (slot-value pane 'contents) (parse-contents pane contents))
    (dolist (content (slot-value pane 'contents))
      (when (content-pane content)
        (sheet-adopt-child pane (content-pane content)))))
  
  (defmethod parse-contents ((pane pane) contents)
    (mapcar #'(lambda (content)
                (cond ((panep content)
                       (make-instance 'plain-content :pane content))
                      ((or (eql content +fill+) (eql content '+fill+))
                       (make-instance 'fill-content))
                      ((and (realp content) (>= content 0))
                       (make-instance 'constant-content :amount content))
                      ((and (consp content)
                            (realp (car content))
                            (>= (car content) 0)
                            (consp (cdr content))
                            (panep (cadr content))
                            (null (cddr content)))
                       (let ((number (car content))
                             (pane   (cadr content)))
                         (if (< number 1)
                             (make-instance 'proportional-content :pane pane :proportion number)
                           (make-instance 'constant-content :pane pane :amount number))))
                      (t
                       (error "~S is not a valid element in the ~S option of ~S."
                              content :contents pane))))
            contents))
  
  (defmethod spacing-value-to-device-units (pane x)
    (cond ((realp x) x)
  
negative.code:                                                   (bounding-rectangle-min-y (sheet-region scrollee)))
                (scroll-bar-thumb-size vscrollbar) (bounding-rectangle-height (sheet-region viewport)))))))
  
  (defmethod initialize-instance :after ((pane scroller-pane) &key contents &allow-other-keys)
    (declare (ignore args))
    (sheet-adopt-child pane (first contents))
    (with-slots (scroll-bar viewport vscrollbar hscrollbar) pane
      (setq viewport (first (sheet-children pane)))
      (when (not (eq scroll-bar :horizontal))
        (setq vscrollbar
          (make-pane 'scroll-bar-pane
                     :orientation :vertical
                     :client (first (sheet-children viewport))
                     :drag-callback (lambda (gadget new-value)
                                      (declare (ignore gadget))
                                      (scroller-pane/vertical-drag-callback pane new-value))
                     :scroll-up-page-callback
                     #'(lambda (scroll-bar)
                         (scroll-page-callback scroll-bar 1))
                     :scroll-down-page-callback
                     #'(lambda (scroll-bar)
                         (scroll-page-callback scroll-bar -1))
                     :scroll-up-line-callback
                     #'(lambda (scroll-bar)
                         (scroll-line-callback scroll-bar 1))
                     :scroll-down-line-callback
                     #'(lambda (scroll-bar)
                         (scroll-line-callback scroll-bar -1))
                     :min-value 0
                     :max-value 1))
        (sheet-adopt-child pane vscrollbar))
      (when (not (eq scroll-bar :vertical))
        (setq hscrollbar
          (make-pane 'scroll-bar-pane
                     :orientation :horizontal
                     :client (first (sheet-children viewport))
                     :drag-callback (lambda (gadget new-value)
                                      (declare (ignore gadget))
  