code: func (txn *Txn) writableIndex(table, index string) *iradix.Txn {
  	if txn.modified == nil {
  		txn.modified = make(map[tableIndex]*iradix.Txn)
  	}
  
  	// Look for existing transaction
  	key := tableIndex{table, index}
  	exist, ok := txn.modified[key]
  	if ok {
  		return exist
  	}
  
  	// Start a new transaction
  	path := indexPath(table, index)
  	raw, _ := txn.rootTxn.Get(path)
  	indexTxn := raw.(*iradix.Tree).Txn()
  
  	// If we are the primary DB, enable mutation tracking. Snapshots should
  	// not notify, otherwise we will trigger watches on the primary DB when
  	// the writes will not be visible.
  	indexTxn.TrackMutate(txn.db.primary)
  
  	// Keep this open for the duration of the txn
  	txn.modified[key] = indexTxn
  	return indexTxn
  }
docs: // writableIndex returns a transaction usable for modifying the
  // given index in a table.