private function getControllerParameters($controllerString)
    {
        $controllerInfo = explode(':', $controllerString);

        if (count($controllerInfo) !== 3) {
            throw new AjaxBlocksException(
                "$controllerString is not a correct controller name.",
                AjaxBlocksErrorCodes::WRONG_CONTROLLER_NAME
            );
        }

        try {
            /** @var Bundle $bundle */
            $bundle = $this->get('kernel')->getBundle($controllerInfo[0]);
        } catch (\Exception $ex) {
            throw new AjaxBlocksException(
                "Bundle \"$controllerInfo[0]\" does not exist or is not loaded.",
                AjaxBlocksErrorCodes::BUNDLE_DOES_NOT_EXIST
            );
        }

        $namespace = $bundle->getNamespace();
        $controllerName = $controllerInfo[1].'Controller';
        $controllerMethod = $controllerInfo[2].'Action';
        $className = $namespace.'\\Controller\\'.$controllerName;

        if (!class_exists($className)) {
            throw new AjaxBlocksException(
                "Class \"$className\" does not exist.",
                AjaxBlocksErrorCodes::CONTROLLER_CLASS_DOES_NOT_EXISTS
            );
        }

        $reflectionClass = new \ReflectionClass($className);

        if (!$reflectionClass->hasMethod($controllerMethod)) {
            throw new AjaxBlocksException(
                "Class \"$className\" does not have a method called \"$controllerMethod\".",
                AjaxBlocksErrorCodes::CONTROLLER_CLASS_METHOD_DOES_NOT_EXISTS
            );
        }

        $controller = $reflectionClass->getMethod($controllerMethod);
        if (!$controller->isPublic()) {
            throw new AjaxBlocksException(
                "Method \"$controllerMethod\" of class \"$className\" is not public or is not callable.",
                AjaxBlocksErrorCodes::CONTROLLER_IS_NOT_CALLABLE
            );
        }

        return $controller->getParameters();
    }