'Changes anything not dundered or not a descriptor.
If a descriptor is added with the same name as an enum member, the name
is removed from _member_names (this may leave a hole in the numerical
sequence of values).
If an enum member name is used twice, an error is raised; duplicate
values are not checked for.
Single underscore (sunder) names are reserved.
Note:   in 3.x __order__ is simply discarded as a not necessary piece
leftover from 2.x'

def __setitem__(self, key, value):

    if ((pyver >= 3.0) and (key == '__order__')):
        return
    if _is_sunder(key):
        raise ValueError('_names_    are    reserved    for    future    Enum    use')
    elif _is_dunder(key):
        pass
    elif (key in self._member_names):
        raise TypeError(('Attempted    to    reuse    key:    %r' % key))
    elif (not _is_descriptor(value)):
        if (key in self):
            raise TypeError(('Key    already    defined    as:    %r' % self[key]))
        self._member_names.append(key)
    super(_EnumDict, self).__setitem__(key, value)
