def insert(self, iterable, index=<NUM_LIT:0>, data=None, weight=<NUM_LIT:1.0>):
if index == len(iterable):<EOL><INDENT>self.is_terminal = True<EOL>self.key = iterable<EOL>self.weight = weight<EOL>if data:<EOL><INDENT>self.data.add(data)<EOL><DEDENT><DEDENT>else:<EOL><INDENT>if iterable[index] not in self.children:<EOL><INDENT>self.children[iterable[index]] = TrieNode()<EOL><DEDENT>self.children[iterable[index]].insert(iterable, index + <NUM_LIT:1>, data)<EOL><DEDENT>
Insert new node into tree

        Args:
            iterable(hashable): key used to find in the future.
            data(object): data associated with the key
            index(int): an index used for insertion.
            weight(float): the wait given for the item added.