anchor.diff:      (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))
  -
  +  (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
  
positive.code:   "Clone the array of children.
  If DEEP is non-NIL, each child is cloned as per (CLONE-NODE NODE T).
  When copying deeply, you can also pass a NEW-PARENT to set on each child."
    (loop with array = (make-array (length (children node)) :adjustable T :fill-pointer 0)
          for child across (children node)
          do (vector-push (if deep
                              (let ((child (clone-node child T)))
  
negative.code: 
  (defun child-position (child)
    "Returns the index of the child within its parent."
    (the fixnum (position child (family child))))
  
  (defun append-child (parent child)
    "Appends the given child onto the parent's child list.
  