'Make the given L{Node} C{new} a child of this node which comes before
the L{Node} C{ref}.
@param new: A L{Node} which will become a child of this node.
@param ref: A L{Node} which is already a child of this node which
C{new} will be inserted before.
@raise TypeError: If C{new} or C{ref} is not a C{Node} instance.
@return: C{new}'

def insertBefore(self, new, ref):

    if ((not isinstance(new, Node)) or (not isinstance(ref, Node))):
        raise TypeError('expected    Node    instance')
    i = self.childNodes.index(ref)
    new.parentNode = self
    self.childNodes.insert(i, new)
    return new
