'Go one token ahead and return the old one.
Use the built-in :func:`next` instead of calling this directly.'

def __next__(self):

    rv = self.current
    if self._pushed:
        self.current = self._pushed.popleft()
    elif (self.current.type is not TOKEN_EOF):
        try:
            self.current = next(self._iter)
        except StopIteration:
            self.close()
    return rv
