code: func (tx readTx) find(table string, by By, checkType func(By) error, appendResult func(api.StoreObject)) error {
  	fromResultIterators := func(its ...memdb.ResultIterator) {
  		ids := make(map[string]struct{})
  		for _, it := range its {
  			for {
  				obj := it.Next()
  				if obj == nil {
  					break
  				}
  				o := obj.(api.StoreObject)
  				id := o.GetID()
  				if _, exists := ids[id]; !exists {
  					appendResult(o.CopyStoreObject())
  					ids[id] = struct{}{}
  				}
  			}
  		}
  	}
  
  	iters, err := tx.findIterators(table, by, checkType)
  	if err != nil {
  		return err
  	}
  
  	fromResultIterators(iters...)
  
  	return nil
  }
docs: // find selects a set of objects calls a callback for each matching object.