anchor.diff:                              exp)))))
             `(let ((,<> ,init))
                ,@(loop for (exp next-exp) on exps collect
  -                    (let ((exp (cond ((find-free-and-<>-symbol exp env) exp)
  +                    (let ((exp (cond ((find-<>-variable-in-same-context exp env) exp)
                                        (spear-p `(->> ,<> ,exp))
                                        (t `(-> ,<> ,exp)))))
                         (if next-exp `(setf ,<> ,exp) exp))))))))
  
positive.code:                           :type 'hu.dwim.walker:unwalked-lexical-variable-reference-form))))
        (find (intern "<>") (mapcar #'hu.dwim.walker:name-of refs)))))
  
  (defun find-free-and-<>-symbol (form env)
      (handler-case (find-free-and-<>-symbol% form env)
        #+sbcl(sb-kernel::arg-count-error () nil)
        #-sbcl(error () nil)))
  
  
negative.code:           `(block ,gblock
               (let ((,<> (or ,init (return-from ,gblock nil))))
                 ,@(loop for (exp next-exp) on exps collect
                        (let ((exp (cond ((find-<>-variable-in-same-context exp env) exp)
                                         (spear-p `(->> ,<> ,exp))
                                         (t `(-> ,<> ,exp)))))
                          (if next-exp
  