code: func (pool *ReaderPool) get(info *SegmentCommitInfo, create bool) *ReadersAndUpdates {
  	pool.Lock() // synchronized
  	defer pool.Unlock()
  
  	assertn(info.Info.Dir == pool.owner.directory, "info.dir=%v vs %v", info.Info.Dir, pool.owner.directory)
  
  	rld, ok := pool.readerMap[info]
  	if !ok {
  		if !create {
  			return nil
  		}
  		rld = newReadersAndUpdates(pool.owner, info)
  		// Steal initial reference:
  		pool.readerMap[info] = rld
  	} else {
  		assertn(rld.info == info, "rld.info=%v info=%v isLive?= %v vs %v",
  			rld.info, info, pool.infoIsLive(rld.info), pool.infoIsLive(info))
  	}
  
  	if create {
  		// Return ref to caller:
  		rld.incRef()
  	}
  
  	assert(pool.noDups())
  
  	return rld
  }
docs: /*
  Obtain a ReadersAndUpdates instance from the ReaderPool. If
  create is true, you must later call release().
  */