':type commands: Iterable[thefuck.types.CorrectedCommand]'

def __init__(self, commands):

    self._commands_gen = commands
    try:
        self._commands = [next(self._commands_gen)]
    except StopIteration:
        raise NoRuleMatched
    self._realised = False
    self._index = 0
