def create(self, tag, value):
        u"""Creates a node, if it doesn't exist yet.

        Unlike attribute access, this allows to pass a node's name with hyphens.
        Those hyphens will be normalized automatically.

        In case the required element already exists, raises an exception.
        Updating/overwriting should be done using `update``.
        """
        child_tags = {child.tag for child in self._xml}

        if tag in child_tags:
            raise KeyError('Node {} already exists in XML tree.'.format(tag))

        self.set(tag, value)
u"""Creates a node, if it doesn't exist yet.

        Unlike attribute access, this allows to pass a node's name with hyphens.
        Those hyphens will be normalized automatically.

        In case the required element already exists, raises an exception.
        Updating/overwriting should be done using `update``.