anchor.diff:  
   (defmethod reverse-path ((path bezier-curve))
     (make-instance 'bezier-curve
  -    :segments (reverse (mapcar #'reverse-segment (%segments path)))))
  +                 :segments (reverse (map (type-of (%segments path)) #'reverse-segment (%segments path)))))
   
   (defmethod reverse-path ((path bezier-area))
     (make-instance 'bezier-area
  -    :segments (reverse (mapcar #'reverse-segment (%segments path)))))
  +                 :segments (reverse (map (type-of (%segments path)) #'reverse-segment (%segments path)))))
   
   
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
positive.code: 		      collect (- (point-to-complex p1) (point-to-complex p0))))
  	 (split-points (find-split-points sides segment))
  	 (segments (split-segment segment split-points)))
      (loop for segment in segments 
  	  if first collect (area-at-point area (slot-value segment 'p0))
  	  collect (convert-primitive-segment-to-bezier-area 
  		   (polygon-points polygon) segment)
  
negative.code:                      y-offset p1y)
              append  (list c0x c0y c1x c1y p1x p1y))))
  
  (defun point-seq-to-segment-seq (point-seq)
    (destructuring-bind (leftover segment-seq)
     (reduce (lambda (acc point)
               (destructuring-bind (build vec)
                   acc
                 (if (= (length build) 3)
                     (progn
                       (vector-push-extend
                        (make-instance 'mcclim-bezier::bezier-segment
                                       :p0 (third build)
                                       :p1 (second build)
                                       :p2 (first build)
                                       :p3 point)
                        vec)
                       (list (list point) vec))
                     (list (cons point build) vec))))
             point-seq
             :initial-value (list nil (make-array 4 :fill-pointer 0)))
      (unless (equal (length leftover) 1)
        (error "Invalid point-seq: ~S ~S" point-seq leftover))
      segment-seq))
  
  (defun coord-seq-to-point-seq (coord-seq)
    (destructuring-bind (leftover coord-seq)
     (reduce (lambda (acc coord)
               (destructuring-bind (build vec)
                   acc
                 (if (= (length build) 1)
                     (progn
                       (vector-push-extend (make-point (car build) coord) vec)
                       (list nil vec))
                     (list (cons coord build) vec))))
             coord-seq
             :initial-value (list nil (make-array 4 :fill-pointer 0)))
     (if leftover
         (error "Invalid coord-seq: ~S" coord-seq)
         coord-seq)))
  
  (defun make-bezier-thing (class point-seq)
    (assert (= (mod (length point-seq) 3) 1))
    (make-instance class :segments (point-seq-to-segment-seq point-seq)))
  
  (defun make-bezier-thing* (class coord-seq)
    (assert (= (mod (length coord-seq) 6) 2))
    (make-bezier-thing class (coord-seq-to-point-seq coord-seq)))
  
  (defun make-bezier-curve (point-seq)
    (make-bezier-thing 'bezier-curve point-seq))
  