public function addInterface(CNabuProviderInterfaceDescriptor $nb_descriptor)
    {
        $interface_type = $nb_descriptor->getType();

        if (!array_key_exists($interface_type, $this->nb_interface_list)) {
            throw new ENabuProviderException(
                ENabuProviderException::ERROR_INTERFACE_TYPE_NOT_EXISTS,
                array(print_r($interface_type, true))
            );
        }

        $retval = $this->nb_interface_list[$interface_type]->addItem($nb_descriptor);
        if ($retval === false) {
            throw new ENabuProviderException(
                ENabuProviderException::ERROR_INTERFACE_ALREADY_REGISTERED, array($nb_descriptor->getClassName())
            );
        }

        return $retval;
    }