anchor.diff:  
   (defmethod initialize-instance :after ((gadget gadget-color-mixin) &rest args)
     (declare (ignore args))
  -  (setf (gadget-current-color gadget) (gadget-normal-color gadget)))
  -
  -(defmethod define-gadget-color ((gadget gadget-color-mixin) x1 y1 x2 y2)
  +  (setf (slot-value gadget 'current-color) (gadget-normal-color gadget)))
  +
  +(defmethod display-gadget-background ((gadget gadget-color-mixin) x1 y1 x2 y2)
     (draw-rectangle* gadget x1 y1 x2 y2 :ink (gadget-current-color gadget) :filled t))
   
  +(defmethod (setf gadget-current-color) :after (color (gadget gadget-color-mixin))
  +  (declare (ignore color))
  +  (dispatch-repaint gadget (sheet-region gadget)))
  +  
  +
  +;;;
  +;;; gadgets look
  +;;;
  +
  +(defun draw-edges-lines* (pane x1 y1 x2 y2)
  +  (draw-line* pane x1 y1 x2 y1 :ink +white+)
  +  (draw-line* pane x1 y1 x1 y2 :ink +white+)
  +  (draw-line* pane x1 y2 x2 y2 :ink +black+)
  +  (draw-line* pane x2 y1 x2 y2 :ink +black+))
  +
   
   ;;
   ;; gadget sub-classes
   ;;
   
  -(defclass basic-gadget (gadget gadget-color-mixin)
  +(defclass basic-gadget (gadget gadget-color-mixin sheet-parent-mixin sheet-leaf-mixin mirrored-sheet)
     ;; Half-baked attempt to be compatible with Lispworks.
     ())
   
  
positive.code: (defun gadgetp (object)
    (typep object 'gadget))
  
  ;;
  ;; gadget's colors
  ;;
  
negative.code: (defmethod handle-event ((pane push-button-pane) (event pointer-enter-event))
    (with-slots (armed) pane
      (unless armed
        (setf armed t
  	    (gadget-current-color pane) (gadget-highlighted-color pane))
        (armed-callback pane (gadget-client pane) (gadget-id pane)))))
  
  (defmethod handle-event ((pane push-button-pane) (event pointer-exit-event))
    (with-slots (armed) pane
      (when armed
        (setf (push-button-show-as-default-p pane) nil
  	    armed nil
  	    (gadget-current-color pane) (gadget-normal-color pane))
        (disarmed-callback pane (gadget-client pane) (gadget-id pane)))))
  
  (defmethod handle-event ((pane push-button-pane) (event pointer-button-press-event))
    (with-slots (armed) pane
      (unless armed
        (armed-callback pane (gadget-client pane) (gadget-id pane)))
      (setf armed ':button-press
  	  (push-button-show-as-default-p pane) t
  	  (gadget-current-color pane) (gadget-pushed-and-highlighted-color pane))))    
  
  (defmethod handle-event ((pane push-button-pane) (event pointer-button-release-event))
    (with-slots (armed) pane
      (when (eql armed ':button-press)
        (activate-callback pane (gadget-client pane) (gadget-id pane))
        (setf armed t
  	    (push-button-show-as-default-p pane) nil
  	    (gadget-current-color pane) (gadget-highlighted-color pane))
        (disarmed-callback pane (gadget-client pane) (gadget-id pane)))))
  
  (defmethod handle-event ((pane push-button-pane) (event window-repaint-event))
  