anchor.diff:  (defmacro with-socket ((socket context type &rest parameters)
                          &body body)
     (when (keywordp type)
  -    (unless (find-method #'make-socket nil `(t (eql ,type)) nil)
  +    (unless (find-method #'make-socket nil `(,(find-class t) (eql ,type)) nil)
         (error (format nil "Incorrect socket type specified (~s)~%" type))))
     `(let ((,socket (make-socket ,context ,type ,@parameters)))
        (unwind-protect
  
positive.code:              :collect
               (let ((socket-pair (car socket-pair)))
                 `(defmethod make-socket (ctx (type (eql ,(first socket-pair)))
                                          &rest parameters)              
                    (change-class (make-zmq-socket ctx
                                                   ,(second socket-pair)
                                                   parameters)
  
negative.code:      (defgeneric (setf ,option-name) (value socket)
         ,doc)
       ,@(cond
           ((eq type :binary)
            `((defmethod (setf ,option-name) ((value string) (socket socket))
                (cffi:with-foreign-string (string value)
                  (%zmq::setsockopt (slot-value socket 'ptr) ,enum string
  