def __split_nonleaf_node(self, node):
[farthest_node1, farthest_node2] = node.get_farthest_successors(self.__type_measurement);<EOL>new_node1 = non_leaf_node(farthest_node1.feature, node.parent, [ farthest_node1 ], None);<EOL>new_node2 = non_leaf_node(farthest_node2.feature, node.parent, [ farthest_node2 ], None);<EOL>farthest_node1.parent = new_node1;<EOL>farthest_node2.parent = new_node2;<EOL>for successor in node.successors:<EOL><INDENT>if ( (successor is not farthest_node1) and (successor is not farthest_node2) ):<EOL><INDENT>distance1 = new_node1.get_distance(successor, self.__type_measurement);<EOL>distance2 = new_node2.get_distance(successor, self.__type_measurement);<EOL>if (distance1 < distance2):<EOL><INDENT>new_node1.insert_successor(successor);<EOL><DEDENT>else:<EOL><INDENT>new_node2.insert_successor(successor);<EOL><DEDENT><DEDENT><DEDENT>return [new_node1, new_node2]<EOL>
!
        @brief Performs splitting of the specified non-leaf node.

        @param[in] node (non_leaf_node): Non-leaf node that should be splitted.

        @return (list) New pair of non-leaf nodes [non_leaf_node1, non_leaf_node2].