anchor.diff:    ((%tag-name :initarg :tag-name :initform (error "Tag name required.") :accessor tag-name :type string)
      (%attributes :initarg :attributes :initform (make-attribute-map) :accessor attributes :type hash-table))
     (:documentation "Standard DOM element/block including attributes, tag-name, parent and children."))
  +(setf (documentation 'tag-name 'function) "Returns the element's tag name.")
  +(setf (documentation 'attributes 'function) "Returns an EQUALP hash-table of the element's attributes.")
   
   (defmethod print-object ((node element) stream)
     (print-unreadable-object (node stream :type T :identity T)
  
positive.code: (defclass doctype (child-node)
    ((%doctype :initarg :doctype :initform (error "Doctype declaration required.") :accessor doctype :type string))
    (:documentation "Special DOM node for the doctype declaration."))
  
  (defmethod print-object ((node doctype) stream)
    (print-unreadable-object (node stream :type T)
  
negative.code: (defclass text-node (child-node)
    ((%text :initarg :text :initform "" :accessor text :type string))
    (:documentation "Text node that can only contain a single text string."))
  (setf (documentation 'text 'function) "Returns the node's textual content.")
  
  (defclass comment (child-node)
    ((%text :initarg :text :initform "" :accessor text :type string))
  