anchor.diff:        (make-pathname :name *name* :defaults path)
       path))
   
  -(defun rewrite-templates (template-directory target-directory parameters)
  +(define-condition target-exists (file-error)
  +  ((template-directory :initarg :template-directory :reader template-directory)
  +   (target-directory :initarg :target-directory :reader target-directory)
  +   (parameters :initarg :parameters :reader parameters)
  +   (if-exists :initarg :if-exists :reader if-exists))
  +  (:report "The target directory has files in it.")
  +  (:documentation "When a target directory has files in it, throw this."))
  +
  +(defun rewrite-templates (template-directory target-directory parameters
  +                          &optional if-exists)
     "Treat every file in TEMPLATE-DIRECTORY as a template file; fill it
   out using PARAMETERS into a corresponding file in
   TARGET-DIRECTORY. The rewriting uses HTML-TEMPLATE. The template start
  
positive.code:                      (enough-namestring pathname template-directory))
                      (target-pathname (template-pathname->output-name
                                        (merge-pathnames relative-namestring
                                                         target-directory))))
                 (ensure-directories-exist target-pathname)
                 (with-open-file (stream
                                  target-pathname
                                  :direction :output
                                  :if-exists :rename-and-delete)
                   (fill-and-print-template pathname
                                            parameters
                                            :stream stream)))))
        (walk-directory template-directory #'rewrite-template))))
  
  (defun default-template-parameters ()
  
negative.code:   (ensure-directories-exist pathname)
    (let ((*default-pathname-defaults* (truename pathname))
          (*name* name))
      (let (c)
        (restart-case (handler-case
                          (rewrite-templates *template-directory*
                                             *default-pathname-defaults*
                                             (template-parameters
                                              template-parameters))
                        (target-exists (condition)
                          (setf c condition)
                          (error condition)))
          (overwrite-everything ()
            :report "Overwrite everything."
            (cl-fad:delete-directory-and-files (target-directory c))
            (ensure-directories-exist (target-directory c))
            (rewrite-templates (template-directory c)
                               (target-directory c)
                               (parameters c)
                               :rename-and-delete))))
      (pushnew *default-pathname-defaults* asdf:*central-registry*
               :test 'equal)
      (dolist (hook *after-make-project-hooks*)
  