'Allow normal list iteration, or raise an exception.
If C{self.iterate} is C{True}, it will be flipped to C{False} and then
normal iteration will proceed.  If C{self.iterate} is C{False},
L{RuntimeError} is raised instead.'

def __iter__(self):

    if self.iterate:
        self.iterate = False
        return super(BadList, self).__iter__()
    raise RuntimeError('Something    bad    happened')
