anchor.diff:          ;; presentation history. In addition, we'll implement the Genera
           ;; behavior of temporarily putting the default on the history
           ;; stack so the user can conveniently suck it in.
  -        (flet ((do-accept (args)
  -                 (apply #'stream-accept stream real-type args))
  -               (get-history ()
  -                 (when real-history-type
  -                   (funcall-presentation-generic-function
  -                    presentation-type-history-for-stream
  -                    real-history-type stream))))
  +        (labels ((get-history ()
  +                   (when real-history-type
  +                     (funcall-presentation-generic-function
  +                      presentation-type-history-for-stream
  +                      real-history-type stream)))
  +                 (do-accept (args)
  +                   (apply #'stream-accept stream real-type args)))
             (let* ((default-from-history (and (not defaultp) provide-default))
                    (history (get-history))
                    (results
                     (multiple-value-list
                      (if history
  -                       (let ((*active-history-type* real-history-type))
  -                         (cond (defaultp
  -                                (with-object-on-history
  -                                    (history default real-default-type)
  -                                  (do-accept rest-args)))
  -                               (default-from-history
  -                                (multiple-value-bind
  -                                      (history-default history-type)
  -                                    (presentation-history-head history
  -                                                               real-default-type)
  -                                  (do-accept (if history-type
  -                                                 (list* :default history-default
  -                                                        :default-type history-type
  -                                                        rest-args)
  -                                                 rest-args))))
  -                               (t (do-accept rest-args))))
  +                       (unwind-protect
  +                            (let ((*active-history-type* real-history-type))
  +                              (cond (defaultp
  +                                     (with-object-on-history
  +                                         (history default real-default-type)
  +                                       (do-accept rest-args)))
  +                                    (default-from-history
  +                                     (multiple-value-bind
  +                                           (history-default history-type)
  +                                         (presentation-history-top history
  +                                                                   real-default-type)
  +                                       (do-accept (if history-type
  +                                                      (list* :default history-default
  +                                                             :default-type history-type
  +                                                             rest-args)
  +                                                      rest-args))))
  +                                    (t (do-accept rest-args))))
  +                         (unless *recursive-accept-p*
  +                           (presentation-history-reset-pointer (get-history))))
                          (do-accept rest-args))))
                    (results-history (get-history)))
               (when results-history
  
positive.code: 		    (history-object (gethash name history-table)))
  	       (unless history-object
  		 (setf history-object
  		       (make-instance 'presentation-history-ring)
  		       (gethash name history-table)
  		       history-object))
  	       history-object))
  
negative.code: (defun presentation-type-history (type)
    (funcall-presentation-generic-function presentation-type-history type))
  
  (defclass presentation-history ()
    ((stack :accessor presentation-history-array
            :initform (make-array 1 :fill-pointer 0
                                    :adjustable t)
            :documentation "The history, with the newest objects at
  the end of the array. Should contain conses with the car being
  the object and the cdr being the type.")
     (pointer :accessor presentation-history-pointer
              :initform nil
              :documentation "The index of the \"current\" object,
  used when navigating the history. If NIL, means that no
  navigation has yet been performed."))
    (:documentation "Class for objects that contain the history for
  a specific type."))
  
  (define-default-presentation-method presentation-type-history (type)
    (if (and *application-frame*
  