@staticmethod
def _perform_init_chain(me, current):
    'Act on the chain of initializations required starting from current.\n        '
    t = current
    while (Hsm.trig(me, (t if (t != Hsm.top) else me.initial_state), Signal.INIT) == Hsm.RET_TRAN):
        path = []
        while (me.state != t):
            path.append(me.state)
            Hsm.trig(me, me.state, Signal.EMPTY)
        me.state = path[0]
        assert (len(path) < 32)
        path.reverse()
        for s in path:
            Hsm.enter(me, s)
        t = path[(- 1)]
    return t
Act on the chain of initializations required starting from current.
@staticmethod
def _perform_init_chain(me, current):
    '\n        '
    t = current
    while (Hsm.trig(me, (t if (t != Hsm.top) else me.initial_state), Signal.INIT) == Hsm.RET_TRAN):
        path = []
        while (me.state != t):
            path.append(me.state)
            Hsm.trig(me, me.state, Signal.EMPTY)
        me.state = path[0]
        assert (len(path) < 32)
        path.reverse()
        for s in path:
            Hsm.enter(me, s)
        t = path[(- 1)]
    return t