anchor.diff:    (truthy-exit-status))
   
   (defun evaluate-synchronous-job (sy)
  +  "Evaluate the given syntax tree synchronously.
  +
  +This is a synonym for `evaluate'."
     (evaluate sy))
   
   (defparameter *special-variables-to-preserve-during-async*
  -  '(*environment*))
  +  '(*environment*)
  +  "The values of these variables will be preserved when switching
  +threads to evaluate a syntax tree asynchronously (both for
  +`evaluate-async-job' and `evaluate-background-job').")
   
   (defun evaluate-async-job (sy completion-handler)
  +  "Evaluate the given syntax tree asynchronously.
  +
  +This function does not create an entry in the job table."
     (let* ((symbols *special-variables-to-preserve-during-async*)
            (symbol-values (mapcar #'symbol-value symbols))
            (fd-bindings *fd-bindings*)
  
positive.code:       (make-thread #'async-eval))))
  
  (defun exit-true-p (exit-thing)
    (zerop exit-thing))
  
  (defun exit-false-p (exit-thing)
    (not (exit-true-p exit-thing)))
  
  (defun invert-exit-status (exit-thing)
    (if (exit-true-p exit-thing)
        1
        0))
  
  (defun truthy-exit-status ()
    0)
  
  (defun exit-status (&key pid exit-code exit-signal stop-signal)
    (declare (ignore pid))
    (+ (if exit-code exit-code 0) (if exit-signal 128 0) (if stop-signal 128 0)))
  
  (defgeneric evaluate (syntax-tree))
  
  (defmethod evaluate (sy)
    (error 'not-implemented :message (format nil "Cannot eval ~A" (class-name (class-of sy)))))
  
negative.code:   (evaluate-term sy))
  
  (defun cmd-prefix-parts (prefix)
    "Given a cmd-prefix, separate it into the 2 things it
  describes (variable assignments and io redirects)."
    (with-slots (io-redirect assignment-word cmd-prefix-tail) prefix
      (multiple-value-bind (assignments redirects)
          (when cmd-prefix-tail
  