anchor.diff:  
   (defgeneric authenticate (authentication-mechanism connection &key if-failed)
     (:documentation "Attempt to authenticate with the server.  Return
  -true if successful.
  -
  -IF-FAILED (default value: :ERROR) determines what to do on failure:
  -
  -  :ERROR - signal an error.
  -
  -  NIL - return NIL."))
  +true if successful.  The default value for IF-FAILED is :ERROR."))
   
    
  
positive.code:    (properties :initarg :properties :reader server-address-properties))
    (:documentation "Represents a standard server address with a
  transport name and a table of properties."))
  
  (defmethod server-address-property (name (server-address standard-server-address)
                                      &key (if-does-not-exist :error))
  
negative.code:       (:replace
         (replace-it)))))
  
  (defun call-with-if-failed-handler (if-failed function)
    "Call FUNCTION in a context according to IF-FAILED:
  
    :ERROR - signal an error on failure.
  
    NIL - return NIL on failure."
    (ecase if-failed
      (:error (funcall function))
      ((nil) (ignore-errors (funcall function)))))
  
  (defmacro with-if-failed-handler (if-failed-form &body forms)
    "Sugar for CALL-WITH-IF-FAILED-HANDLER."
    `(call-with-if-failed-handler ,if-failed-form (lambda () ,@forms)))
  
  
  ;;;; Protocol classes and generic functions
  