anchor.diff:  
   (defmacro defstruct (name-and-options &rest slot-descriptions)
     (multiple-value-bind (name conc-name constructors predicate area copier
  -                        included-structure-name included-slot-descriptions)
  +                        included-structure-name included-slot-descriptions
  +                        print-object print-function print-object-specializer)
         (parse-defstruct-options name-and-options)
       (let* ((included-structure (when included-structure-name
                                    (get-structure-type included-structure-name)))
  
positive.code:         (conc-name nil)
          (included-structure-name nil)
          (included-slot-descriptions nil)
          (included-structure nil))
      (if (symbolp name-and-options)
  	(setf name name-and-options)
  	(progn
  
negative.code:              (list `(defun ,copier (object)
                        (check-type object ,name)
                        (copy-structure object))))
           ,@(when print-object
               (list `(defmethod print-object ((object ,name) stream)
                        (funcall (function ,print-object) object stream))))
           ,@(when print-function
               (list `(defmethod print-object ((object ,name) stream)
                        (funcall (function ,print-function) object stream 0))))
  	 ,@(let ((n 0))
  	     (mapcar (lambda (s)
  		       (setf n (1+ n))
  