anchor.diff:               :collect
                (let ((socket-pair (car socket-pair)))
                  `(defmethod make-socket (ctx (type (eql ,(first socket-pair)))
  -                                        &rest parameters)              
  +                                        &rest parameters)
                     (change-class (make-zmq-socket ctx
                                                    ,(second socket-pair)
                                                    parameters)
  
positive.code:    #:ptr
     #:socket
     #:rcvmore
     #:pair 
     #:pub 
     #:sub
     #:req
     #:rep
  
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
  