anchor.diff:    (check-type limit (or null (integer 0)))
     (make-instance 'semaphore :name name :value value :limit limit))
   
  -(defun semaphore-name (semaphore)
  -  (sup:event-name (semaphore-not-zero-event semaphore)))
  +(defmethod name ((object semaphore))
  +  (sup:event-name (semaphore-not-zero-event object)))
   
   (defun semaphore-value (semaphore)
     "Return SEMAPHORE's current value."
  
positive.code: ;;;; Mailbox. A buffered communication channel.
  
  (defclass mailbox ()
    ((%name :reader mailbox-name :initarg :name)
     (%capacity :reader mailbox-capacity :initarg :capacity :type (or null (integer 1)))
     (%not-full-event :reader mailbox-send-possible-event)
     (%not-empty-event :reader mailbox-receive-possible-event)
  
negative.code: 
  (in-package :mezzano.sync)
  
  (defgeneric thread-pool-block (thread-pool blocking-function &rest arguments)
    (:documentation "Called when the current thread's thread-pool slot
  is non-NIL and the thread is about to block. The thread-pool slot
  is bound to NIL for the duration of the call."))
  
  (defgeneric get-object-event (object)
    (:documentation "Return the underlying event associated with OBJECT.
  This must return an event object."))
  
  (defgeneric name (object)
    (:documentation "Return the name of OBJECT.")
    (:method (object) nil))
  
  (defun wait-for-objects-with-timeout (timeout &rest objects)
    "As with WAIT-FOR-OBJECTS, but with a timeout.
  