public function createTemplateRenderInterface(string $class_name) : INabuMessagingTemplateRenderInterface
    {
        $nb_engine = CNabuEngine::getEngine();
        $nb_descriptor = $nb_engine->getProviderInterfaceDescriptor(
            $this->getVendorKey(), $this->getModuleKey(),
            CNabuProviderFactory::INTERFACE_MESSAGING_TEMPLATE_RENDER, $class_name
        );

        if ($nb_descriptor instanceof CNabuProviderInterfaceDescriptor) {
            $fullname = $nb_descriptor->getNamespace() . "\\templates\\renders\\$class_name";
            if ($nb_engine->preloadClass($fullname)) {
                $interface = new $fullname($this);
                if ($this->registerTemplateRenderInterface($interface)) {
                    return $interface;
                } else {
                    throw new ENabuMessagingException(
                        ENabuMessagingException::ERROR_TEMPLATE_RENDER_CANNOT_BE_INSTANTIATED,
                        array($class_name)
                    );
                }
            } else {
                throw new ENabuMessagingException(
                    ENabuMessagingException::ERROR_INVALID_TEMPLATE_RENDER_CLASS_NAME,
                    array($class_name)
                );
            }
        } else {
            throw new ENabuProviderException(
                ENabuProviderException::ERROR_INTERFACE_DESCRIPTOR_NOT_FOUND,
                array($class_name)
            );
        }
    }