private N split(N node) {
    // choose the split dimension and the split point
    int minimum = node.isLeaf() ? leafMinimum : dirMinimum;
    long[] split = settings.nodeSplitter.split(node, NodeArrayAdapter.STATIC, minimum);

    // New node
    final N newNode = node.isLeaf() ? createNewLeafNode() : createNewDirectoryNode();
    // do the split
    node.splitByMask(newNode, split);

    // write changes to file
    writeNode(node);
    writeNode(newNode);

    return newNode;
  }
private N split ( N node ) { int minimum = node . isLeaf ( ) ? leafMinimum : dirMinimum ; long [ ] split = settings . nodeSplitter . split ( node , NodeArrayAdapter . STATIC , minimum ) ; final N newNode = node . isLeaf ( ) ? createNewLeafNode ( ) : createNewDirectoryNode ( ) ; node . splitByMask ( newNode , split ) ; writeNode ( node ) ; writeNode ( newNode ) ; return newNode ; }
Splits the specified node and returns the newly created split node.

@param node the node to be split
@return the newly created split node