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:       (if (gadget-value pane)
  	  (setf (gadget-current-color pane) (gadget-pushed-and-highlighted-color pane))
  	  (setf (gadget-current-color pane) (gadget-normal-color pane)))
        (dispatch-repaint pane (sheet-region pane))
        (disarmed-callback pane (gadget-client pane) (gadget-id pane)))))
  
  (defmethod handle-event ((pane toggle-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)
      (setf (gadget-current-color pane) (gadget-pushed-and-highlighted-color pane))
      (dispatch-repaint pane (sheet-region pane))))     
        
  (defmethod handle-event ((pane toggle-button-pane) (event pointer-button-release-event))
    (with-slots (armed) pane
      (when (eql armed ':button-press)
        (setf (gadget-value pane :invoke-callback t) (not (gadget-value pane)))
        (setf armed t)
        (unless (gadget-value pane)
  	(setf (gadget-current-color pane) (gadget-highlighted-color pane))
  	(dispatch-repaint pane (sheet-region pane)))
        (disarmed-callback pane (gadget-client pane) (gadget-id pane)))))
  
  (defmethod handle-event ((pane toggle-button-pane) (event window-repaint-event))
  
negative.code: 	    x1 1
  	    y2 (- y2 y1 1)
  	    y1 1)
        (display-gadget-background pane x1 y1 x2 y2)
        (if (or (gadget-value pane) (eql armed ':button-press))
  	  (draw-edges-lines* pane x2 y2 x1 y1)
  	  (draw-edges-lines* pane x1 y1 x2 y2))
        (draw-text* pane text
  		     (round (- x2 x1) 2)
  		     (round (- y2 y1) 2)
  