code: private N overflowTreatment(N node, IndexTreePath<SpatialEntry> path, int[] splitAxis) {
      if(node.isSuperNode()) {
        // only extend supernode; no re-insertions
        assert node.getCapacity() == node.getNumEntries();
        assert node.getCapacity() > dirCapacity;
        node.growSuperNode();
        return null;
      }
      // Handled by reinsertion?
      if(settings.getOverflowTreatment().handleOverflow(this, node, path)) {
        return null;
      }
      return split(node, splitAxis);
    }
docs: Treatment of overflow in the specified node: if the node is not the root
  node and this is the first call of overflowTreatment in the given level
  during insertion the specified node will be reinserted, otherwise the node
  will be split.
  
  @param node the node where an overflow occurred
  @param path the path to the specified node
  @param splitAxis field for collecting the split axis used for this split or
  <code>-1</code> if the split was not successful
  @return In case of a re-insertion: <code>null</code>. In case of a split:
  Either the newly created split node with its split dimension logged
  in <code>splitAxis</code>, or <code>null</code>, if
  <code>node</code> has been converted into a supernode.