/**
  * @param AbstractModel $model
  * @param $param
  *
  * @return EntityObjectStorage
  */
 public function findBy(AbstractModel $model, $param = [])
 {
     if ($this->useCache && $this->modelCache) {
         if ($ret = $this->modelCache->get($model, $param)) {
             return $ret;
         }
     }
     list($query, $param, $type) = $this->queryBuilder->generateSelectForModel($model, $param);
     $result = $this->executeQuery($model, $this->prepare($query, $this->prepareParam($param)));
     if ($this->useCache && $this->modelCache) {
         $this->modelCache->set($model, $param);
     }
     return $result;
 }