Create an entry located at ``location``.
        
        Args:
            location: String or :class:`LocationDescriptor` to describe a "separator location" (i.e. dir1/dir2/dir3 for
                instance).
            element: Element to store at the location.
            unique: ``True`` means that the element to store **must** be unique and that the corresponding node doesn't already exist.
            delete_element: In case the element must not be unique, delete or not the existing element at
                the ``location`` if it exist?
        
        Returns:
            The created node with the element.
            
        Raises:
            A ``RuntimeError`` is raised if leaf node already exists and ``unique`` is set to ``True``.

        Note:
            Non existing linking node (i.e. non leaf nodes) are created on the fly.

def _create_entry(self, location, element, unique=True, delete_element=False):
        """
        Create an entry located at ``location``.
        
        Args:
            location: String or :class:`LocationDescriptor` to describe a "separator location" (i.e. dir1/dir2/dir3 for
                instance).
            element: Element to store at the location.
            unique: ``True`` means that the element to store **must** be unique and that the corresponding node doesn't already exist.
            delete_element: In case the element must not be unique, delete or not the existing element at
                the ``location`` if it exist?
        
        Returns:
            The created node with the element.
            
        Raises:
            A ``RuntimeError`` is raised if leaf node already exists and ``unique`` is set to ``True``.

        Note:
            Non existing linking node (i.e. non leaf nodes) are created on the fly.
        """
        loc_descriptor = self._get_location_descriptor(location)

        # find parent node
        parent_node = self._root_node
        if loc_descriptor.nbr_of_sub_locations() > 1:
            parent_node = self._get_node(loc_descriptor.get_sub_location_descriptor(), create_non_existing_nodes=True)

        # find child node if it exist
        last_location = loc_descriptor.last_sub_location()
        child_node = parent_node.get_child_node_or_default(last_location, None)
        if child_node is None:
            # create node
            child_node = TreeMapNode(element)
            parent_node.set_child_node(last_location, child_node)
            self._nbr_of_nodes += 1
        else:
            # child node exist
            if unique:
                raise RuntimeError("Node corresponding to the location '%s' already exist!" % loc_descriptor.to_string())
            elif delete_element:
                child_node.delete_element()
            child_node.set_element(element)

        return child_node