def __insert_for_noneleaf_node(self, entry, search_node):
node_amount_updation = False;<EOL>min_key = lambda child_node: child_node.get_distance(search_node, self.__type_measurement);<EOL>nearest_child_node = min(search_node.successors, key = min_key);<EOL>child_node_updation = self.__recursive_insert(entry, nearest_child_node);<EOL>search_node.feature += entry;<EOL>if (len(search_node.successors) > self.__branch_factor):<EOL><INDENT>if (search_node is self.__root):<EOL><INDENT>self.__root = non_leaf_node(search_node.feature, None, [ search_node ], None);<EOL>search_node.parent = self.__root;<EOL>self.__amount_nodes += <NUM_LIT:1>;<EOL>self.__height += <NUM_LIT:1>;<EOL><DEDENT>[new_node1, new_node2] = self.__split_nonleaf_node(search_node);<EOL>parent = search_node.parent;<EOL>parent.successors.remove(search_node);<EOL>parent.successors.append(new_node1);<EOL>parent.successors.append(new_node2);<EOL>self.__amount_nodes += <NUM_LIT:1>;<EOL>node_amount_updation = True;<EOL><DEDENT>elif (child_node_updation is True):<EOL><INDENT>if (self.__merge_nearest_successors(search_node) is True):<EOL><INDENT>self.__amount_nodes -= <NUM_LIT:1>;<EOL><DEDENT><DEDENT>return node_amount_updation<EOL>
!
        @brief Recursive insert entry from none-leaf node to the tree.

        @param[in] entry (cfentry): Clustering feature.
        @param[in] search_node (cfnode): None-leaf node from that insertion should be started.

        @return (bool) True if number of nodes at the below level is changed, otherwise False.