code: func (tx *transaction) nextBucketID() ([4]byte, error) {
  	// Load the currently highest used bucket ID.
  	curIDBytes := tx.fetchKey(curBucketIDKeyName)
  	curBucketNum := binary.BigEndian.Uint32(curIDBytes)
  
  	// Increment and update the current bucket ID and return it.
  	var nextBucketID [4]byte
  	binary.BigEndian.PutUint32(nextBucketID[:], curBucketNum+1)
  	if err := tx.putKey(curBucketIDKeyName, nextBucketID[:]); err != nil {
  		return [4]byte{}, err
  	}
  	return nextBucketID, nil
  }
docs: // nextBucketID returns the next bucket ID to use for creating a new bucket.
  //
  // NOTE: This function must only be called on a writable transaction.  Since it
  // is an internal helper function, it does not check.