'Constructor.
Args:
items: The list of items to iterate in.
_default: The initially selected value.
_mode: Behavior when the first/last item is reached.
Modes.edge: Go to the first/last item
Modes.exception: Raise an IndexError.'

def __init__(self, items=None, default=_UNSET, mode=Modes.exception):

    if (not isinstance(mode, self.Modes)):
        raise TypeError('Mode    {}    is    not    a    Modes    member!'.format(mode))
    if (items is None):
        self._items = []
    else:
        self._items = list(items)
    self._default = default
    if (default is not _UNSET):
        self._idx = self._items.index(default)
    else:
        self._idx = None
    self._mode = mode
    self.fuzzyval = None
