anchor.diff:  (define-element-writer td               (:bo :ac)          :children)
   
   
  +(defun tag-case (tag)
  +  (let ((stag (string tag)))
  +    (if (every (lambda (ch)
  +                 (if (alpha-char-p ch)
  +                     (upper-case-p ch)
  +                     t))
  +               stag)
  +        (string-downcase stag)
  +        stag)))
   
   (defun unparse-html (html &optional (stream *standard-output*))
     "Writes back on STREAM the reconstituted HTML source."
  -  (if (atom html)
  -      (format stream "~A" html)
  -      (let ((nl (gethash (html-tag html) *nl*)))
  -        (format stream "~:[~;~&~]<~A~{ ~A=~S~}>~:[~;~&~]" 
  -                (member :bo nl)
  -                (string-downcase (html-tag html))
  -                (html-attributes html)
  -                (member :ao nl))
  -        (dolist (item (html-contents html))
  -          (unparse-html item stream))
  -        (format stream "~:[~;~&~]</~A>~:[~;~&~]"
  -                (member :bc nl)
  -                (string-downcase (html-tag html))
  -                (member :ac nl)))))
  +  (let ((package *package*))
  +    (with-standard-io-syntax
  +      (let ((*package* package))
  +        (cond
  +          ((atom html)
  +           (format stream "~A" html))
  +          ((string-equal (html-tag html) :document)
  +           ;; (:document nil …)
  +           (dolist (item (html-contents html))
  +             (unparse-html item stream)))
  +          ((string-equal (html-tag html) :foreign)
  +           ;; (:foreign nil "<?xml version=\"1.0\" encoding=\"utf-8\" ?>")
  +           (format stream "~&~{~A~}~%" (html-contents html)))
  +          ((string-equal (html-tag html) :comment)
  +           ;; (:foreign nil "<?xml version=\"1.0\" encoding=\"utf-8\" ?>")
  +           (format stream "~&<!--~{~A~}-->~%" (html-contents html)))
  +          ((string-equal (html-tag html) :definition)
  +           ;; (:definition () :doctype "html" "PUBLIC" "-//W3C//DTD XHTML 1.0 Transitional//EN"
  +           ;;                        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd")
  +           (format stream "~&<!~{~A~^ ~}>~%" (cddr html)))
  +          (t
  +           (let ((nl (first (gethash (html-tag-key html) *nl*))))
  +             (format stream "~:[~;~&~]<~A~{ ~A=~S~}>~:[~;~&~]" 
  +                     (member :bo nl)
  +                     (tag-case (html-tag html))
  +                     (loop :for (attr val) :on (html-attributes html) :by (function cddr)
  +                           :nconc (list (tag-case attr) val))
  +                     (member :ao nl))
  +             (dolist (item (html-contents html))
  +               (unparse-html item stream))
  +             (format stream "~:[~;~&~]</~A>~:[~;~&~]"
  +                     (member :bc nl)
  +                     (tag-case (html-tag html))
  +                     (member :ac nl)))))))))
   
   
   
  
positive.code:                       (advance parser)
                        (parse-file parser)))
      (when verbose (format *trace-output* "~&file ~S parsed~%" name))
      (setf walked (walk synthetic))
      (when verbose (format *trace-output* "~&file ~S walked~%" name))
      (setf encased (encase walked))
      (when verbose (format *trace-output* "~&file ~S encased -- done.~%" name))
  
negative.code: 
  (defun write-indented-children (self)
    (dolist (line (split-string (with-output-to-string (*standard-output*)
                                  (write-children-text self))
                                #(#\newline)))
      (princ "   ") (princ line) (terpri)))
  
  (defun write-parenthesized-children (self left right)
  