anchor.diff:  (defun thread-alive-p (thread)
     (mp:process-alive-p thread))
   
  -(defun join-thread (thread)
  +(declaim (inline %join-thread))
  +(defun %join-thread (thread)
     #-#.(cl:if (cl:find-symbol (cl:string '#:process-join) :mp) '(and) '(or))
     (mp:process-wait (format nil "Waiting for thread ~A to complete" thread)
                      (complement #'mp:process-alive-p)
  
positive.code:   (mp:initialize-multiprocessing))
  
  (defun %make-thread (function name)
    (mp:process-run-function name nil function))
  
  (defun current-thread ()
    #-#.(cl:if (cl:find-symbol (cl:string '#:get-current-process) :mp) '(and) '(or))
  
negative.code:   #+#.(cl:if (cl:find-symbol (cl:string '#:process-join) :mp) '(and) '(or))
    (mp:process-join thread))
  
  (defun join-thread (thread)
    (%join-thread thread)
    (let ((return-values
            (mp:process-property 'return-values thread)))
      (values-list return-values)))
  
  (mark-supported)
  