public function search(Criteria $criteria)
{
!$this->objectDefinition->canSearch() && $this->throwUnsupportedMethodException();
$this->eventDispatcher->dispatch(RestEvents::PRE_SEARCH, new PreSearchEvent($criteria));
$repository = $this->getRepository();
$total = $repository->count($criteria);
$objects = $repository->search($criteria);
$results = new SearchResults($objects, $total);
$this->eventDispatcher->dispatch(RestEvents::POST_SEARCH, new PostSearchEvent($results));
return $results;
}