anchor.diff:  
   (defgeneric add-actor (environment actor))
   (defgeneric update (object))
  -(defgeneric draw (actor cr))
  -(defgeneric draw-label (actor cr))
  +(defgeneric draw (cr object))
  +(defgeneric draw-label (cr actor))
   (defgeneric herd (sheep))
   
   (defclass actor ()
     ((x
       :initarg :x
       :accessor x
  -    :initform (random +drawing-area-width+))
  +    :initform (error "must supply x coordinate"))
      (y
       :initarg :y
       :accessor y
  -    :initform (random +drawing-area-height+))
  +    :initform (error "must supply y coordinate"))
      (name
       :initarg :name
       :accessor name
  
positive.code:                       (+ (y actor) (* lead-length (sin (heading actor)))))))
    (cairo-stroke cr))
  
  (defmethod draw-label (actor cr)
    (draw-text cr (x actor) (y actor)
               (format nil "~a" actor)))
  
  (defmethod draw-label ((mover sheep) cr)
    (draw-text cr (x mover) (y mover)
               (format nil "~a: ~a" (name mover) (status mover))))
  
  
negative.code:                                ((eq (status sheep) 'content) .1))))
    (call-next-method))
  
  (defmethod draw :around (cr object)
    (when cr (call-next-method)))
  
  (defmethod draw (cr actor)
    (cairo-set-source-rgb cr 0.8 0.4 0.2)
    (cairo-arc cr (x actor) (- +drawing-area-height+ (y actor)) 5 0 (* 2 pi))
    (cairo-fill cr)
  