Nirth, код какой-то индусский. Поясняю:
Что это за такое свойство length у функции?? У вас динамические функции на входе что ли?

Код AS3:
closure.length == 3
Потом непонятно почему в условии стоит
as вместо
is

Код AS3:
if( handler as Function )
Потом switcher возвращает функцию, которую нужно обязательно тоже вызвать и передать true или false. Что нельзя сразу после или перед dispatcher:IEventDispatcher вставить add:Boolean ??
Есть еще одно сомнительное место:

Код AS3:
if( rest[l - 3] is Boolean )
args = rest.splice( -3, 3 );
else if( rest[l - 2] is Boolean )
args = rest.splice( -2, 2 );
else if( rest[l - 1] is Boolean )
args = rest.splice( -1, 1 );
Идет сразу проверка rest[l - 3] без проверки длины массива, а что если rest.length == 2? Нехорошо обращаться к элементу с индексом -1.