docs: protected void splitNodes(KDTreeNode node, double[][] universe,
        int depth) throws Exception {
      double[][] nodeRanges = m_EuclideanDistance.initializeRanges(m_InstList,
                                                   node.m_Start, node.m_End);
      if (node.numInstances() <= m_MaxInstInLeaf
          || getMaxRelativeNodeWidth(nodeRanges, universe) <= m_MinBoxRelWidth)
        return;
  
      // splitting a node so it is no longer a leaf
      m_NumLeaves--;
  
      if (depth > m_MaxDepth)
        m_MaxDepth = depth;
  
      m_Splitter.splitNode(node, m_NumNodes, nodeRanges, universe);
      m_NumNodes += 2;
      m_NumLeaves += 2;
  
      splitNodes(node.m_Left, universe, depth + 1);
      splitNodes(node.m_Right, universe, depth + 1);
    }