$criteria =
$this->criteriaBuilder->
handleRequest( $request,
$criteria,
$this->registry->
getByEntityName('product'
),
$context->
getContext() );
$this->processor->
prepare($request,
$criteria,
$context);
$this->eventDispatcher->
dispatch( new ProductSearchCriteriaEvent($request,
$criteria,
$context),
ProductEvents::PRODUCT_SEARCH_CRITERIA
);
$response =
$this->
getDecorated()->
load($request,
$context,
$criteria);
$this->processor->
process($request,
$response->
getListingResult(),
$context);
$this->eventDispatcher->
dispatch( new ProductSearchResultEvent($request,
$response->
getListingResult(),
$context),
ProductEvents::PRODUCT_SEARCH_RESULT
);