anchor.diff:  (define-command isearch-next () ()
     (when (boundp '*isearch-string*)
       (when (string= "" *isearch-string*)
  -      (setq *isearch-string* *isearch-prev-string*))
  +      (setq *isearch-string* (isearch-default-string)))
       (setf (variable-value 'isearch-prev-last :buffer) nil)
       (cond ((variable-value 'isearch-next-last :buffer)
              (setf (variable-value 'isearch-next-last :buffer) nil)
  
positive.code: 
  (defun isearch-end ()
    (isearch-reset-overlays (current-buffer))
    (setq *isearch-prev-string* *isearch-string*)
    (buffer-unbound (current-buffer) 'isearch-redisplay-string)
    (remove-hook (variable-value 'after-change-functions :buffer)
                 'isearch-change-buffer-hook)
  
negative.code:                                       :undef-hook 'isearch-self-insert))
  (defvar *isearch-prompt*)
  (defvar *isearch-string*)
  (defvar *isearch-previous-string* nil)
  (defvar *isearch-start-point*)
  (defvar *isearch-search-function*)
  (defvar *isearch-search-forward-function*)
  