code: func (n *node) splitTwo(pageSize int) (*node, *node) {
  	// Ignore the split if the page doesn't have at least enough nodes for
  	// two pages or if the nodes can fit in a single page.
  	if len(n.inodes) <= (minKeysPerPage*2) || n.sizeLessThan(pageSize) {
  		return n, nil
  	}
  
  	// Determine the threshold before starting a new node.
  	var fillPercent = n.bucket.FillPercent
  	if fillPercent < minFillPercent {
  		fillPercent = minFillPercent
  	} else if fillPercent > maxFillPercent {
  		fillPercent = maxFillPercent
  	}
  	threshold := int(float64(pageSize) * fillPercent)
  
  	// Determine split position and sizes of the two pages.
  	splitIndex, _ := n.splitIndex(threshold)
  
  	// Split node into two separate nodes.
  	// If there's no parent then we'll need to create one.
  	if n.parent == nil {
  		n.parent = &node{bucket: n.bucket, children: []*node{n}}
  	}
  
  	// Create a new node and add it to the parent.
  	next := &node{bucket: n.bucket, isLeaf: n.isLeaf, parent: n.parent}
  	n.parent.children = append(n.parent.children, next)
  
  	// Split inodes across two nodes.
  	next.inodes = n.inodes[splitIndex:]
  	n.inodes = n.inodes[:splitIndex]
  
  	// Update the statistics.
  	n.bucket.tx.stats.Split++
  
  	return n, next
  }
docs: // splitTwo breaks up a node into two smaller nodes, if appropriate.
  // This should only be called from the split() function.