protected function indexAction() {
        try {
            $entity = $this->generateEntity();

            $query = new Index($this->request, $entity, $this->getQueryWhiteList());
            $this->response->setHeader('link', $query->generateLinks());
            /** @var ResultSet|ModelInterface[] $entities */
            $entities = $query->getResultSet();
            $entities = $this->filterEntities($entities);
            $this->indexActionInternal($entities);
            if($this->hasFlag((new FlagEnum(FlagEnum::PAGE_COUNTS)))) {
                $this->getOutputObject()->PageCounts = $query->generatePageCounts();
            }
        } catch(Exception $e) {
            $this->handleError($e);
        } catch(ValidationException $e) {
            $this->handleValidationError($e);
        } catch(AclException $e) {
            $this->handleAclError($e);
        } catch(CatchableException $e) {
            $this->handleCatchableError($e);
        }
    }