code: func (c *Cursor) First() (key []byte, value []byte) {
  	_assert(c.bucket.tx.db != nil, "tx closed")
  	c.stack = c.stack[:0]
  	p, n := c.bucket.pageNode(c.bucket.root)
  	c.stack = append(c.stack, elemRef{page: p, node: n, index: 0})
  	c.first()
  
  	// If we land on an empty page then move to the next value.
  	// https://github.com/boltdb/bolt/issues/450
  	if c.stack[len(c.stack)-1].count() == 0 {
  		c.next()
  	}
  
  	k, v, flags := c.keyValue()
  	if (flags & uint32(bucketLeafFlag)) != 0 {
  		return k, nil
  	}
  	return k, v
  
  }
docs: // First moves the cursor to the first item in the bucket and returns its key and value.
  // If the bucket is empty then a nil key and value are returned.
  // The returned key and value are only valid for the life of the transaction.