anchor.diff:  	      (channels msg) :test #'equal)
       t))
   
  +(defmethod print-object ((msg channel-message) stream)
  +  "Print channel-type object."
  +  (print-unreadable-object (msg stream :type t :identity t)
  +    (format stream "~a: NICK: '~a' HOST: '~a' CHANNEL: '~a' ARGS: '~a'"
  +            (date-fmt msg)
  +            (nick msg)
  +            (host msg)
  +            (channel msg)
  +            (args msg))))
  +
  +;; JOIN message
  +
   (defclass join-message (channel-message)
     ((channel
       :documentation "IRC channel which user joined.")))
  +
  +;; PRIVMSG message
   
   (defclass privmsg-message (channel-message)
     ((channel
  
positive.code: 
  ;; Classes
  
  (defclass irc-message ()
    ((server
      :initarg :server
  
negative.code:   (with-accessors ((message message) (action action)) msg
      (setf action (subseq (string-trim '(#\u001) message) 8))))
  
  (defmethod print-object ((msg action-message) stream)
    "Print PRIVMSG ACTION object."
    (print-unreadable-object (msg stream :type t :identity t)
      (format stream "~a: PREFIX: '~a' CHANNEL: '~a' ACTION: '~a'"
              (date-fmt msg)
              (prefix msg)
              (channel msg)
              (action msg))))
  
  ;; KICK message
  
  (defclass kick-message (channel-message)
    ((channel
      :documentation "IRC channel where user is kicked.")
  