code: func (cur *blockCursor) next() (key, value []byte) {
  	// Use buffered value, if set.
  	if cur.buf.filled {
  		key, value = cur.buf.key, cur.buf.value
  		cur.buf.filled = false
  		return key, value
  	}
  
  	// Read next key.
  	key, value = cur.cur.Next()
  
  	// Fill buffer for EOF.
  	if key == nil {
  		cur.buf.key, cur.buf.value, cur.buf.filled = key, value, false
  		return nil, nil
  	}
  
  	// Parse key and buffer if outside of block.
  	id := binary.BigEndian.Uint64(key)
  	if id/cur.n > cur.base {
  		cur.buf.key, cur.buf.value, cur.buf.filled = key, value, true
  		return nil, nil
  	}
  
  	return key, value
  }
docs: // next returns the next key/value within the block.
  // Returns nils at the end of the block.