def ReplaceChild(self, key, item):
        '''
        Method to remove child at <key> and replace it with <item>, then put the child back onto the end of the list

        :param key: index to position <item>

        :param item: child object to add

        :return:
        '''
        if key in self.GetChildrenIndexes():
            node = self.GetChild(key)
            children = node.GetChildrenIndexes()
            child_nodes = [(i, node.GetChild(i)) for i in children]
            self.children[key] = item
            [self.children[key].AddChild(kid[1], kid[0])
             for kid in child_nodes]