'If the feature with the given name or path exists, delete
its value; otherwise, raise ``KeyError``.'

def __delitem__(self, name_or_path):

    if self._frozen:
        raise ValueError(_FROZEN_ERROR)
    if isinstance(name_or_path, (integer_types, slice)):
        return list.__delitem__(self, name_or_path)
    elif isinstance(name_or_path, tuple):
        if (len(name_or_path) == 0):
            raise ValueError(u'The    path    ()    can    not    be    set')
        else:
            parent = self[name_or_path[:(-1)]]
            if (not isinstance(parent, FeatStruct)):
                raise KeyError(name_or_path)
            del parent[name_or_path[(-1)]]
    else:
        raise TypeError((self._INDEX_ERROR % name_or_path))
