code: func (f *freelist) free(txid txid, p *page) {
  	if p.id <= 1 {
  		panic(fmt.Sprintf("cannot free page 0 or 1: %d", p.id))
  	}
  
  	// Free page and all its overflow pages.
  	var ids = f.pending[txid]
  	for id := p.id; id <= p.id+pgid(p.overflow); id++ {
  		// Verify that page is not already free.
  		if f.cache[id] {
  			panic(fmt.Sprintf("page %d already freed", id))
  		}
  
  		// Add to the freelist and cache.
  		ids = append(ids, id)
  		f.cache[id] = true
  	}
  	f.pending[txid] = ids
  }
docs: // free releases a page and its overflow for a given transaction id.
  // If the page is already free then a panic will occur.