def _create_entry(self, location, element, unique=True, delete_element=False):
loc_descriptor = self._get_location_descriptor(location)<EOL>parent_node = self._root_node<EOL>if loc_descriptor.nbr_of_sub_locations() > <NUM_LIT:1>:<EOL><INDENT>parent_node = self._get_node(loc_descriptor.get_sub_location_descriptor(), create_non_existing_nodes=True)<EOL><DEDENT>last_location = loc_descriptor.last_sub_location()<EOL>child_node = parent_node.get_child_node_or_default(last_location, None)<EOL>if child_node is None:<EOL><INDENT>child_node = TreeMapNode(element)<EOL>parent_node.set_child_node(last_location, child_node)<EOL>self._nbr_of_nodes += <NUM_LIT:1><EOL><DEDENT>else:<EOL><INDENT>if unique:<EOL><INDENT>raise RuntimeError("<STR_LIT>" % loc_descriptor.to_string())<EOL><DEDENT>elif delete_element:<EOL><INDENT>child_node.delete_element()<EOL><DEDENT>child_node.set_element(element)<EOL><DEDENT>return child_node<EOL>
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.