anchor.diff:  (defparameter *special-variables-to-preserve* (fset:empty-set))
   
   (defun preserve-special-variable (symbol)
  +  "Include the given symbol's value when preserving the current shell
  +environment.
  +
  +See `extend-shell-environment'."
     (setf *special-variables-to-preserve* (fset:with *special-variables-to-preserve* symbol)))
   
   (defun preserve-special-variables ()
  
positive.code: (defparameter *shell-environment-handlers* (make-hash-table))
  
  (defun extend-shell-environment (name pickler unpickler reclaimer)
    (setf (gethash name *shell-environment-handlers*)
          (make-entry :pickle pickler :unpickle unpickler :reclaim reclaimer)))
  
  
negative.code:          (format s "  Backtrace:~%~A" backtrace))))))
  
  (defun preserve-shell-environment (&key label backtrace-p)
    "Capture the current shell environment and return an object
  representing all of its state.
  
  The returned object must be destroyed explicitly with
  `destroy-preserved-shell-environment'.  Aside from destruction, you
  can also re-hydrate the shell environment using
  `with-restored-shell-environment'.
  
  The shell environment usually consists of things like file descriptor
  bindings, shell variable bindings, and things of that like.  If you
  want to include state in the shell environment, use
  `extend-shell-environment'."
    (let* ((table (make-hash-table))
           (backtrace (when backtrace-p
                        (with-output-to-string (s)
  