anchor.diff:  
   (defmethod collide ((bullet bullet) event)
     (when (and (parent bullet) (typep (event-hit event) 'enemy))
  +    (detach (parent bullet) bullet)))
  +
  +(defmethod update ((bullet enemy-bullet) event)
  +  ;; TODO: doesn't work for nested objects. Need absolute-offset.
  +  (with-slots (parent offset size) bullet
  +    (with-slots ((view-offset offset) (view-size size)) (game-view *game*)
  +      (let ((x1 (x offset)) (y1 (y offset))
  +            (x2 (x view-offset)) (y2 (y view-offset))
  +            (w1 (x size)) (h1 (y size))
  +            (w2 (x view-size)) (h2 (y view-size)))
  +        (when (or (<= (+ x1 w1) x2)
  +                  (<= (+ x2 w2) x1)
  +                  (<= (+ y1 h1) y2)
  +                  (<= (+ y2 h2) y1))
  +          (detach parent bullet))))))
  +
  +(defmethod collide ((bullet enemy-bullet) event)
  +  (when (and (parent bullet) (typep (event-hit event) 'thopter))
       (detach (parent bullet) bullet)))
   
   (defmethod update ((enemy enemy) event)
  
positive.code:                           (t (circular r))))
                    (circular r)))))))
  
  (defmethod collide ((enemy enemy) event)
    (with-slots (parent offset depth veloc health) enemy
      (typecase (event-hit event)
  
negative.code: (defmethod collide ((thopter thopter) event)
    (with-slots (parent offset depth veloc health) thopter
      (typecase (event-hit event)
        (enemy-bullet (decf health))
        (enemy        (decf health 4))
        (explosion    (decf health)))
      (when (and parent (<= health 0))
        (make-instance 'explosion :parent parent
                       :offset offset :depth depth :veloc veloc
  