anchor.diff:  
   ;;; Information for checking the validity of files fetched for
   ;;; installing/updating the client code.
  -
  -(defgeneric setup-file-expected-size (client-info))
  -(defgeneric setup-file-sha256 (client-info))
  -
  -(defgeneric asdf-file-expected-size (client-info))
  -(defgeneric asdf-file-sha256 (client-info))
  -
  -(defgeneric client-tar-file-expected-size (client-info))
  -(defgeneric client-tar-file-sha256 (client-info))
  -
  -;;; TODO: check cryptographic digests too.
  -
  -(define-condition invalid-client-file (error)
  -  ((file
  -    :initarg :file
  -    :reader invalid-client-file-file)))
  -
  -(define-condition badly-sized-client-file (invalid-client-file)
  -  ((expected-size
  -    :initarg :expected-size
  -    :reader badly-sized-client-file-expected-size)
  -   (actual-size
  -    :initarg :actual-size
  -    :reader badly-sized-client-file-actual-size))
  -  (:report (lambda (condition stream)
  -             (format stream "Unexpected file size for ~A ~
  -                             - expected ~A but got ~A"
  -                     (invalid-client-file-file condition)
  -                     (badly-sized-client-file-expected-size condition)
  -                     (badly-sized-client-file-actual-size condition)))))
  -
  -(defun check-client-file-size (file expected-size)
  -  (let ((actual-size (file-size file)))
  -    (unless (eql expected-size actual-size)
  -      (error 'badly-sized-client-file
  -             :file file
  -             :expected-size expected-size
  -             :actual-size actual-size))))
  -
  -(defgeneric check-setup-file (file client-info)
  -  (:method (file client-info)
  -    (check-client-file-size file (setup-file-expected-size client-info))))
  -
  -(defgeneric check-asdf-file (file client-info)
  -  (:method (file client-info)
  -    (check-client-file-size file (asdf-file-expected-size client-info))))
  -
  -(defgeneric check-client-tar-file (file client-info)
  -  (:method (file client-info)
  -    (check-client-file-size file (client-tar-file-expected-size client-info))))
   
   (defclass client-file-info ()
     ((plist-key
  
positive.code:     (let* ((instance (make-instance file-info-class))
             (key (plist-key instance))
             (file-info-plist (getf plist key)))
        (destructuring-bind (&key url size md5 sha256 &allow-other-keys)
            file-info-plist
          (reinitialize-instance instance
                                 :plist file-info-plist
                                 :url url
  
negative.code:   (:default-initargs
     :plist-key :client-tar
     :name "quicklisp.tar"))
  
  (define-condition invalid-client-file (error)
    ((file
      :initarg :file
      :reader invalid-client-file-file)))
  
  (define-condition badly-sized-client-file (invalid-client-file)
    ((expected-size
      :initarg :expected-size
      :reader badly-sized-client-file-expected-size)
     (actual-size
      :initarg :actual-size
      :reader badly-sized-client-file-actual-size))
    (:report (lambda (condition stream)
               (format stream "Unexpected file size for ~A ~
                               - expected ~A but got ~A"
                       (invalid-client-file-file condition)
                       (badly-sized-client-file-expected-size condition)
                       (badly-sized-client-file-actual-size condition)))))
  
  (defun check-client-file-size (file expected-size)
    (let ((actual-size (file-size file)))
      (unless (eql expected-size actual-size)
        (error 'badly-sized-client-file
               :file file
               :expected-size expected-size
               :actual-size actual-size))))
  
  ;;; TODO: check cryptographic digests too.
  
  (defgeneric check-client-file (file client-file-info)
    (:documentation
     "Signal an INVALID-CLIENT-FILE error if FILE does not match the
     metadata in CLIENT-FILE-INFO.")
    (:method (file client-file-info)
      (check-client-file-size file (size client-file-info))
      client-file-info))
  
  ;;; Structuring and loading information about the Quicklisp client
  ;;; code
  
  (defclass client-info ()
    ((setup-info
  