def initBeforeAfter(self): #{{{
        run_signal = Signal(base_signal)
        run_signal.connect_before(dict(before=[base_before]))
        run_signal.connect_after(dict(after=[base_after]))

        run_deco = decosig(overload=False)(base_signal)
        run_deco.before(base_before)
        run_deco.after(base_after)

        run_rule = dispatch.generic()(lambda l: l)
        run_rule.when('True')(base_signal)
        run_rule.before('True')(base_before)
        run_rule.after('True')(base_after)

        louie.connect(base_before, 'before_after', base_signal)
        louie.connect(base_signal, 'before_after', base_signal)
        louie.connect(base_after, 'before_after', base_signal)

        def run_louie(l): #{{{
            ret = louie.send('before_after', base_signal, l)
            return ret[1][1]
        # End def #}}}

        run_aossi_basesignal = BaseSignal(base_signal)
        run_aossi_basesignal.connect(before=[base_before])
        run_aossi_basesignal.connect(after=[base_after])

        run_aossi_signal = AossiSignal(base_signal)
        run_aossi_signal.connect(before=[base_before])
        run_aossi_signal.connect(after=[base_after])

        run_aossi_deco = aossi_signal()(base_signal)
        run_aossi_deco.before(base_before)
        run_aossi_deco.after(base_after)

        ba = {'base': run_base,
              'signal': run_signal,
              'deco': run_deco,
              'rule': run_rule,
              'louie': run_louie,
              'aossi_basesignal': run_aossi_basesignal,
              'aossi_signal': run_aossi_signal,
              'aossi_deco': run_aossi_deco}
        dpath = op.join('data', 'before_after')
        if not op.exists(dpath):
            os.makedirs(dpath, 0700)
        return ba
# End def #}}}

def signal_signal(l): #{{{
    l.append('SIGNAL')
    return l
# End def #}}}

def signal_before(l): #{{{
    l.append('BEFORE')
# End def #}}}

def signal_after(ret, l): #{{{
    l.append('AFTER')
# End def #}}}

signal = Signal(signal_signal)
signal.connect_before(dict(before=[signal_before]))
signal.connect_after(dict(after=[signal_after]))

@decosig(overload=False)
def deco_signal(l): #{{{
    l.append('SIGNAL')
    return l
# End def #}}}

@deco_signal.before
def deco_before(l): #{{{
    l.append('BEFORE')
# End def #}}}

@deco_signal.after