anchor.diff:     :function nil
      :thread sb-thread:*current-thread*))
   
  -(defvar *all-processes* (list *current-process*))
  +(defvar *all-processes* (list *current-process*)
  +  "A list of processes created by McCLIM, plus the one that was
  +running when this file was loaded.")
   
   (defvar *all-processes-lock*
     (sb-thread:make-mutex :name "Lock around *ALL-PROCESSES*"))
  
positive.code:       (setf *current-process*
              (or (find sb-thread:*current-thread* *all-processes*
                   :key #'process-thread)
                  (%make-process
                   :name (sb-thread:thread-name sb-thread:*current-thread*)
                   :function nil
  
negative.code: 
  (defun make-process (function &key name)
    (let ((p (%make-process :name name :function function)))
      (restart-process p)))
  
  (defun restart-process (p)
    (labels ((boing ()
  	     (let ((*current-process* p))
                 (sb-thread:with-mutex (*all-processes-lock*)
                   (pushnew p *all-processes*))
  	       (unwind-protect (funcall (process-function p))
                   (sb-thread:with-mutex (*all-processes-lock*)
                     (setf *all-processes* (delete p *all-processes*)))))))
      (when (process-thread p) (sb-thread:terminate-thread p))
      (when (setf (process-thread p) (sb-thread:make-thread #'boing :name (process-name p)))
        p)))
  
  (defun destroy-process (process)
    (sb-thread:terminate-thread (process-thread process)))
  
  (defun current-process ()
  