anchor.diff:     (bytes-written ((socket a))
       :accessorp t)
      (external-format-in ((socket a))
  +    :accessorp t
       :documentation "External format to use when converting incoming octets into characters. If NIL,
                       no encoding will be done on incoming data, and ON-SOCKET-DATA will receive the
                       raw (unsigned-byte 8) data.")
      (external-format-out ((socket a))
  +    :accessorp t
       :documentation "External format to use for outgoing octets and strings. If NIL, an error is
                       signaled if an attempt is made to write a string to the socket.")
      (close-after-drain-p ((socket a))
  
positive.code: ;; Base socket protocol
  (defprotocol socket (a)
    ((driver ((socket a))
      :documentation "Driver object used to dispatch SOCKET's events.")
     (server ((socket a))
      :accessorp t
  
negative.code:    (write-buffer-offset :initform 0 :accessor socket-write-buffer-offset)
     (bytes-read :initform 0 :accessor socket-bytes-read)
     (bytes-written :initform 0 :accessor socket-bytes-written)
     (external-format-in :initarg :external-format-in :accessor socket-external-format-in)
     (external-format-out :initarg :external-format-out :accessor socket-external-format-out)
     (close-after-drain-p :initform nil :accessor socket-close-after-drain-p)
     (readingp :initform nil :accessor socket-reading-p)
     (writingp :initform nil :accessor socket-writing-p)))
  