'Initialize a `StateMachine` object; add state objects.
Parameters:
- `state_classes`: a list of `State` (sub)classes.
- `initial_state`: a string, the class name of the initial state.
- `debug`: a boolean; produce verbose output if true (nonzero).'

def __init__(self, state_classes, initial_state, debug=0):

    self.input_lines = None
    '`StringList`    of    input    lines    (without    newlines).\n                                Filled    by    `self.run()`.'
    self.input_offset = 0
    'Offset    of    `self.input_lines`    from    the    beginning    of    the    file.'
    self.line = None
    'Current    input    line.'
    self.line_offset = (-1)
    'Current    input    line    offset    from    beginning    of    `self.input_lines`.'
    self.debug = debug
    'Debugging    mode    on/off.'
    self.initial_state = initial_state
    'The    name    of    the    initial    state    (key    to    `self.states`).'
    self.current_state = initial_state
    'The    name    of    the    current    state    (key    to    `self.states`).'
    self.states = {}
    'Mapping    of    {state_name:    State_object}.'
    self.add_states(state_classes)
    self.observers = []
    'List    of    bound    methods    or    functions    to    call    whenever    the    current\n                                line    changes.        Observers    are    called    with    one    argument,    ``self``.\n                                Cleared    at    the    end    of    `run()`.'
