public static function generate(string $operationName, string $resourceShortName, $operationType): string
    {
        if (OperationType::SUBRESOURCE === $operationType = OperationTypeDeprecationHelper::getOperationType($operationType)) {
            throw new InvalidArgumentException('Subresource operations are not supported by the RouteNameGenerator.');
        }

        return sprintf(
            '%s%s_%s_%s',
            static::ROUTE_NAME_PREFIX,
            self::inflector($resourceShortName),
            $operationName,
            $operationType
        );
    }