def __delitem__(self, key):
        """Delete self[key].

        It also removes the corresponding value(s) from
        the flat_values list. Also raises KeyError if key
        doesn't exist.

        key (any python hashable object)
            object used as dictionary key.

        Extends __delitem__ method.

        ### Alternative implementation

        You could also just delete the item and call the
        "update" method without arguments, since it has
        the side-effect of clearing and repopulating the
        flat_values dict. See "Alternative implementation"
        section on the __setitem__ method docstring.
        """
        ### retrieve the value from the key; this also has
        ### the desired side effect of raising a KeyError
        ### if the key doesn't exist
        value = self[key]

        ### use the builtin dict.__delitem__ method
        super().__delitem__(key)

        ### then finally remove the value(s) from the
        ### removed item from the flat values list
        ### depending on whether it is a mapping or not

        ## if it is not a mapping, remove the value from
        ## the list

        if not isinstance(value, Mapping):
            self._bound_remove(value)

        ## if it is a mapping, though, remove all its
        ## nested values from the list

        else:

            ## get generator with all nested values
            nested_values = flatten_mapping_values(value)

            ## remove one by one from the flat_values list
            for nested_value in nested_values:
                self._bound_remove(nested_value)
Delete self[key].

        It also removes the corresponding value(s) from
        the flat_values list. Also raises KeyError if key
        doesn't exist.

        key (any python hashable object)
            object used as dictionary key.

        Extends __delitem__ method.

        ### Alternative implementation

        You could also just delete the item and call the
        "update" method without arguments, since it has
        the side-effect of clearing and repopulating the
        flat_values dict. See "Alternative implementation"
        section on the __setitem__ method docstring.
        
nodezator/ourstdlibs/collections/fldict/main.py