/**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var $context Context */
     /** @var $context Context */
     if (null !== $context->getResponseStatusCode()) {
         // the status code is already set
         return;
     }
     $statusCode = Response::HTTP_OK;
     if ($context->hasErrors()) {
         $groupedCodes = [];
         foreach ($context->getErrors() as $error) {
             $code = $error->getStatusCode() ?: Response::HTTP_INTERNAL_SERVER_ERROR;
             $groupCode = (int) floor($code / 100) * 100;
             $groupedCodes[$groupCode][] = $code;
         }
         if (!empty($groupedCodes)) {
             $maxGroup = max(array_keys($groupedCodes));
             $statusCode = $maxGroup;
             if (count($groupedCodes[$maxGroup]) === 1) {
                 $statusCode = array_pop($groupedCodes[$maxGroup]);
             }
         } else {
             $statusCode = Response::HTTP_INTERNAL_SERVER_ERROR;
         }
     }
     $context->setResponseStatusCode($statusCode);
 }