anchor.diff:    (print-unreadable-object (repository-address stream :type t :identity t)
       (format stream "~A" (address repository-address))))
   
  -(defgeneric install-repository-from-address (repository-address repository target-directory)
  -  (:documentation "Cache the given repository from repository-address to target-directory.
  +(defgeneric install-repository-from-address (repository-address repository install-directory)
  +  (:documentation "Cache the given repository from repository-address to install-directory.
                      Methods of this generic function should return T on success, or NIL on failure."))
   
   (defmethod install-repository-from-address ((repository-address directory-repository-address)
  -                                            repository target-directory)
  +                                            repository install-directory)
     (multiple-value-bind (result code status)
         (ecase *address-cache-operation*
           (:symlink
  -         (let ((linkname (subseq (princ-to-string target-directory)
  +         (let ((linkname (subseq (princ-to-string install-directory)
                                    0
  -                                 (1- (length (princ-to-string target-directory))))))
  +                                 (1- (length (princ-to-string install-directory))))))
              (verbose-msg "Symlinking ~A to ~A~%"
                           (repository-directory repository-address)
                           linkname)
  
positive.code:         (:copy
           (verbose-msg "Copying directory ~A to ~A~%"
                        (repository-directory repository-address)
                        target-directory)
           (copy-directory (repository-directory repository-address)
                           target-directory)))
      (declare (ignore result))
      (zerop status)))
  
  (defmethod install-repository-from-address ((repository-address url-repository-address)
                                              repository target-directory)
    (flet ((run-or-fail (&rest args)
             (multiple-value-bind (result code status)
                 (apply #'trivial-shell:shell-command args)
  
negative.code:         (install-library-version library-version (libraries-directory project)))))
  
  (defun update-repository (installed-library-version library-version)
    (let ((updated-p
  	 (update-repository-from-address
  	  (repository-address (repository installed-library-version))
  	  (repository installed-library-version)
  	  (install-directory installed-library-version)
  	  library-version)))
      (when (not updated-p)
        (error "Error updating ~A to ~A" 
  	     installed-library-version
  	     library-version))
      (make-instance 'installed-library-version
  		   :name (library-name library-version)
  		   :version (version library-version)
  		   :install-directory (install-directory installed-library-version)
  		   :repository (repository installed-library-version))))
  
  (defmethod install-repository (repository directory)
    (install-repository-from-address (repository-address repository)
  