anchor.diff:  					      :protocol :http
   					      :hostname "localhost"))
   
  -(define-condition merging-error (simple-error)
  -  ()
  +(define-condition merge-conflict (simple-error)
  +  ((url :initarg :url
  +	:reader url
  +	:initform nil)
  +   (defaults :initarg :defaults
  +             :reader defaults
  +	     :initform nil)
  +   (property :initarg :property
  +	     :reader property
  +	     :initform nil))
  +  (:report (lambda (c s)
  +	     (format s "Conflict merging ~A property between ~A and ~A"
  +		     (property c)
  +		     (url c)
  +		     (defaults c))))
     (:documentation "An error of this kind is raised when an error ocurs when merging urls"))
   
   (defun merge-urls (url
  
positive.code: 				 program
  				 parameters
  				 fragment))
  		   (on-error nil on-error-p))
    ":on-error specifies the restart to call. One of :use-default :use-url or nil"
    (if on-error-p
        (handler-bind ((merging-error #'(lambda (error)
  					(invoke-restart on-error))))
  	(%merge-urls url
  		     :defaults defaults
  		     :properties properties))
  
negative.code:   (let ((new-url (make-instance 'generic-url)))
      (flet ((assign-default-property (prop)
  	     (funcall (fdefinition `(setf ,prop))
  		      (funcall (fdefinition prop) defaults)
  		      new-url))
  	   (assign-url-property (prop)
  	     (funcall (fdefinition `(setf ,prop))
  		      (funcall (fdefinition prop) url)
  		      new-url)))
      (loop for prop in properties
         do (cond
  