'append(child) -> element
Appends child and returns self if self is not full or first
non-full parent.'

def append(self, child):

    assert (not self.full())
    self.children.append(child)
    child.parent = self
    node = self
    while node.full():
        node = node.parent
    return node
