question: protected List createParentBoundables ( List childBoundables , int newLevel ) { Assert . isTrue ( ! childBoundables . isEmpty ( ) ) ; int minLeafCount = ( int ) Math . ceil ( ( childBoundables . size ( ) / ( double ) getNodeCapacity ( ) ) ) ; ArrayList sortedChildBoundables = new ArrayList ( childBoundables ) ; Collections . sort ( sortedChildBoundables , xComparator ) ; List [ ] verticalSlices = verticalSlices ( sortedChildBoundables , ( int ) Math . ceil ( Math . sqrt ( minLeafCount ) ) ) ; return createParentBoundablesFromVerticalSlices ( verticalSlices , newLevel ) ; }
target:  Creates the parent level for the given child level. First, orders the items by the x-values of the midpoints, and groups them into vertical slices. For each slice, orders the items by the y-values of the midpoints, and group them into runs of size M (the node capacity). For each run, creates a new (parent) node.