anchor.diff:  message from the server."))
   
   (define-condition connection-failed (error)
  -  ((client :initarg :client)
  -   (error :initarg error))
  +  ((client :initarg :client :documentation "Client whose connection failed")
  +   (error :initarg error :documentation "Reason for failure"))
     (:report (lambda (condition stream)
   	     (with-slots (client) condition
   	       (format stream "Connection failed for ~a" client))))
  -  (:documentation "Signalled by `connect'."))
  +  (:documentation "Signalled by @c(connect)."))
   
   ;;; macros
   
   (defmacro define-handler ((command class-spec prefix-var arguments-var)
   			  &body body)
  -  "Define handling for /command/.
  -
  -This is currently a convenience for specializing on `handle'.  An
  -example is the handler for PING messages (which by default is the only
  -handler specialization).
  -
  ---
  -;; (define-handler (:ping client prefix arguments)
  -;;    (send-pong client (first arguments)))
  ---
  +  "Define handling for @c(command).
  +
  +This is currently a convenience for specializing on the generic
  +function @c(handle).  An example is the handler for PING
  +messages (which by default is the only handler specialization).
  +
  +@begin[lang=lisp](code)
  +(define-handler (:ping client prefix arguments)
  +  (send-pong client (first arguments)))
  +@end(code)
   
   If you wanted to use a different variable-name for the client
   variable, you could also have written it as
   
  ---
  -;; (define-handler (:ping (client client) prefix arguments)
  -;;   (send-pong client (first arguments)))
  ---
  +@begin[lang=lisp](code)
  +(define-handler (:ping (client client) prefix arguments)
  +  (send-pong client (first arguments)))
  +@end(code)
   "
     (let ((%command-var (gensym "g-command-var")))
       `(defmethod handle ((,%command-var (eql ,command))
  
positive.code: ;;; conditions
  
  (define-condition connection-closed ()
    ((client :initarg :client))
    (:report (lambda (condition stream)
  	     (with-slots (client) condition
  	       (format stream "Connection closed for ~a" client))))
    (:documentation "Signalled by `disconnect'.
  
  Disconnecting is the default action whenever an error occurs, so this
  signal can for example be handled to reconnect."))
  
  (define-condition connection-lost (error)
    ((client :initarg :client))
    (:report (lambda (condition stream)
  	     (with-slots (client) condition
  	       (format stream "Connection lost for ~a" client))))
  
negative.code: - `:password' -- the password to regiseter with (optional)
  - `:log-pathname' -- pathname for packet-log pathname (optional)
  
  Please note that you call @c(connect) on a @c(client) instance, rather than
  having @c(connect) return a @c(client) instance."))
  
  ;;; implementation
  
  