anchor.diff:           (destructuring-bind ,(cons 'msg-type (first-els components)) msg
              (declare (ignore msg-type))
              ,@(mapcar #'(lambda (c) (getf (rest c) :parse)) (keep-lsts-with :parse components))
  -           (values ,@(first-els (remove-lsts-with :dont-export components)))))
  -       (setf *msg-parsers* (acons ,type-id #',parse-name *msg-parsers*)))))
  +           (values ,@(first-els (remove-lsts-with :dont-export components))))))))
   
   (msg-rpc-type request 0
                 (msg-id :make (incf *msg-id*))
  
positive.code:               msg-method
                msg-params)
  
  
  (defun connect (&optional (host #(127 0 0 1)) (port 7777))
    "Connect to the TCP socket."
    (setf *socket* (socket-connect host port :element-type '(unsigned-byte 8))))
  
  ; (defun send-msg (msg)
  ;   "Send encoded msg to *socket*"
  ;   (loop for m across msg
  ;         do (write-byte m (socket-stream *socket*))
  ;         finally (force-output (socket-stream *socket*))))
  
  (defun get-result ()
    "Wait for response from *socket*."
    (parse-msg (decode-stream (socket-stream *socket*))))
  
  (defun parse-msg (msg)
    "Call appropriate parse function based on type of message."
    (funcall (cdr (assoc (first msg) *msg-parsers*)) msg))
  
  (defun byte-array->string (arr)
    "Convert array of (unsigned-byte 8) to string."
    (octets-to-string (concatenate '(vector (unsigned-byte 8)) arr) :encoding :utf-8))
  
  
  (defparameter *global-event-base* nil)
  ;
  
negative.code:   (defun first-els (lst) (mapcar #'(lambda (c) (first (mklst c))) (mapcar #'mklst lst))))
  
  (defmacro msg-rpc-type (type-name type-id &rest components)
    (let ((make-name (symbol-append 'make- type-name))
          (predicate-name (symbol-append type-name 'p))
          (parse-name (symbol-append 'parse- type-name)) 
          (components (mapcar #'mklst components)))
      `(progn
         (defun ,make-name ,(first-els (remove-lsts-with :make components))
  