anchor.diff:  	:test #'=))
   
   (defun create-queue (handle)
  -  "Create a new message queue."
  +  "Create a new message queue.
  +
  +HANDLE ::= integer to identify the queue.
  +
  +Returns the queue."
  +  (declare (type integer handle))
     (let ((q (find-queue handle)))
       (when q 
         (return-from create-queue q)))
  
positive.code: 			 :handle handle))))
  
  (defun close-queue (q)
    (declare (type client-queue q))
    (rpc-close (client-queue-conn q)))
  
  (defun post-message (client data)
    "Post a message to the queue. Returns immediately, the server does not acknowledge receipt of the message."
    (declare (type client-queue client))
    (incf (client-queue-id client))
    (call-post (client-queue-handle client)
  	     (client-queue-id client)   
  	     data
  	     :connection (client-queue-conn client)
  	     :timeout nil))
  	     
  ;; ----------------------------
  
  
negative.code:   (declare (type mq q))
    (setf *mqlist* (remove q *mqlist*)))
  
  (defun get-message (queue &optional return-immediately timeout)
    "Receive a message from the queue. 
  QUEUE ::= a message queue returned from a previous call to CREATE-QUEUE.
  
  RETURN-IMMEDIATELY ::= if true, will return immediately with the first available message, 
  no messages available returns immediately with value nil. If false will block until a message arrives.
  
  TIMEOUT ::= if supplied, should be the time to wait in seconds for a message. If the timeout expires returns nil.
  
  Returns (values data id)."
    (declare (type mq queue))
    (bt:with-lock-held ((mq-lock queue))
      (let ((m (dequeue (mq-messages queue))))
        (cond
          (m
           (values (message-data m) (message-id m)))
  