code: func (s *LDBStore) tryAccessIdx(addr Address, po uint8) (*dpaDBIndex, bool) {
  	ikey := getIndexKey(addr)
  	idata, err := s.db.Get(ikey)
  	if err != nil {
  		return nil, false
  	}
  
  	index := new(dpaDBIndex)
  	decodeIndex(idata, index)
  	oldGCIdxKey := getGCIdxKey(index)
  	s.batch.Put(keyAccessCnt, U64ToBytes(s.accessCnt))
  	index.Access = s.accessCnt
  	idata = encodeIndex(index)
  	s.accessCnt++
  	s.batch.Put(ikey, idata)
  	newGCIdxKey := getGCIdxKey(index)
  	newGCIdxData := getGCIdxValue(index, po, ikey[1:])
  	s.batch.Delete(oldGCIdxKey)
  	s.batch.Put(newGCIdxKey, newGCIdxData)
  	select {
  	case s.batchesC <- struct{}{}:
  	default:
  	}
  	return index, true
  }
docs: // tryAccessIdx tries to find index entry. If found then increments the access
  // count for garbage collection and returns the index entry and true for found,
  // otherwise returns nil and false.