anchor.diff:    ()
     (:documentation "Base DOM node class."))
   
  +
  +(declaim (ftype (function (nesting-node) (and (vector plump:child-node) (not simple-array))) children))
   (defclass nesting-node (node)
     ((%children :initarg :children :initform (make-child-array) :accessor children :type vector))
     (:documentation "Node class that can contain child nodes."))
   (setf (documentation 'children 'function) "Returns a vector of child-nodes that are contained within the node.")
   
  +(declaim (ftype (function (child-node) nesting-node) parent))
   (defclass child-node (node)
     ((%parent :initarg :parent :initform (error "Parent required.") :accessor parent :type (or null node)))
     (:documentation "Node class that is a child and thus has a parent."))
  
positive.code: 
  (defun child-position (child)
    "Returns the index of the child within its parent."
    (position child (family child)))
  
  (defun append-child (parent child)
    "Appends the given child onto the parent's child list.
  
negative.code:     (format stream "~@[~a~]" (tag-name node)))
    node)
  
  (declaim (ftype (function (&optional fixnum) (and (vector plump:child-node) (not simple-array))) make-child-array))
  (defun make-child-array (&optional (size 0))
    "Creates an array to contain child elements"
    (make-array size :adjustable T :fill-pointer 0 :element-type 'child-node))
  
  (declaim (ftype (function (&optional fixnum) (and (vector plump:child-node) (not simple-array))) ensure-child-array))
  (defun ensure-child-array (array)
    "If the ARRAY is suitable as a child-array, it is returned.
  Otherwise the array's elements are copied over into a proper
  