anchor.diff:  (defmethod %pack-cursor-tree ( (cat cat-cursor-t) &key (phase 0) )
   
     ;; only do so much packing
  -  (when (> phase 10)
  +  (when (> phase 100)
       (format t "limiting phase reached: ~A~%" phase)
  -    (return-from %pack-cursor-tree cat))
  +    (return-from %pack-cursor-tree (values cat nil)))
   
     ;; check if we only have a single inner cursor, in which case
     ;; we are redundant
  
positive.code: ;;;; the simple parser we have for cursor expressions.
  ;;;; This is a method based upoin the cursor type.
  ;;;; by default we do nothing and just reutnr the original cursor
  (defmethod %pack-cursor-tree ( cursor &key &allow-other-keys )
    cursor)
  
  
negative.code: ;;;; This should be chained in a call to call-next-method
  (defmethod %pack-cursor-tree ( (comp composing-cursor-t) &key )
    (format t "composing pack called: ~A~%" comp)
    (let ((any-changes nil))
      (replace 
       (original-cursors comp)
       (mapcar #'(lambda (x)
  		 (multiple-value-bind (packed changed-p)
  		     (%pack-cursor-tree x)
  		   (when changed-p
  		     (setf any-changes t))
  		   packed))
  	     (original-cursors comp)))
      (if any-changes
  	(%pack-cursor-tree comp)
  	(values
  	 comp
  	 nil))))
  
  ;;=========================================================================
  
  