anchor.diff:                        (princ element)
                         (when (intersection '(:bc :ac) (first entry))
                           (terpri)))))))
  -       (cond ((member (html-tag element) '(:foreign :definition :comment)
  +       (cond ((member (element-tag element) '(:foreign :definition :comment)
                         :test (function string-equal))
                 #|ignore|#)
  -             ((member (html-tag element) '(:pre :quote :address)
  +             ((member (element-tag element) '(:pre :quote :address)
                         :test (function string-equal))
                 (let ((*pre* t))
                   (write-it)))
  
positive.code: DO:                 Parse the HTML in the STRING (between START and END)
  VERBOSE:            When true, writes some information in the *TRACE-OUTPUT*.
  RETURN:             A list of html elements.
  SEE ALSO:           HTML-TAG, HTML-ATTRIBUTES, HTML-PATTRIBUTE, HTML-CONTENTS.
  " 
    (when verbose
      (format *trace-output* "~&starting string parsing from ~D~%" start))
  
negative.code: 
  
  (defvar *row-kind* :body)
  (defstruct row   kind tag attributes cells)
  (defstruct cell           attributes lines)
  
  
  (defun collect-table-cells (element)
    (when (listp element)
      (case (element-tag element)
        ((:table)  (let ((*row-kind* :body)
                         (rows       '()))
                     (dolist (child (element-children element) rows)
                       (when (listp child)
                         (case (element-tag child)
                           ((:thead :tbody) (appendf rows (collect-table-cells child)))
                           ((:th :tr)       (appendf rows (list (collect-table-cells child))))
                           ((:caption :col :colgroup) #| ignore for now |#)
  