code: func (n *node) put(oldKey, newKey, value []byte, pgid pgid, flags uint32) {
  	if pgid >= n.bucket.tx.meta.pgid {
  		panic(fmt.Sprintf("pgid (%d) above high water mark (%d)", pgid, n.bucket.tx.meta.pgid))
  	} else if len(oldKey) <= 0 {
  		panic("put: zero-length old key")
  	} else if len(newKey) <= 0 {
  		panic("put: zero-length new key")
  	}
  
  	// Find insertion index.
  	index := sort.Search(len(n.inodes), func(i int) bool { return bytes.Compare(n.inodes[i].key, oldKey) != -1 })
  
  	// Add capacity and shift nodes if we don't have an exact match and need to insert.
  	exact := (len(n.inodes) > 0 && index < len(n.inodes) && bytes.Equal(n.inodes[index].key, oldKey))
  	if !exact {
  		n.inodes = append(n.inodes, inode{})
  		copy(n.inodes[index+1:], n.inodes[index:])
  	}
  
  	inode := &n.inodes[index]
  	inode.flags = flags
  	inode.key = newKey
  	inode.value = value
  	inode.pgid = pgid
  	_assert(len(inode.key) > 0, "put: zero-length inode key")
  }
docs: // put inserts a key/value.