Всем доброго дня!
Не могу понять на каком этапе происходит клонирование моего пользовательского события, которое после этого превращается в простой объект класса Event из моего ApplicationEvent.
Есть объект Application, который рассылает события об активации и деактивации:

Код AS3:
this.dispatchEvent(new ApplicationEvent(ApplicationEvent.ACTIVATE_EVENT, this));
// ......
this.dispatchEvent(new ApplicationEvent(ApplicationEvent.DEACTIVATE_EVENT, this));
Метод клонивания в самом ApplicationEvent:

Код AS3:
override public function clone():Event
{
if (this.disposed)
throw new IllegalOperationError("Can't clone disposed model event!");
return new ApplicationEvent(this.type, this.appModel);
}
Назначение прослушивания:

Код AS3:
Application.instance.addEventListener(ApplicationEvent.ACTIVATE_EVENT, onActivate);
Application.instance.addEventListener(ApplicationEvent.DEACTIVATE_EVENT, onDeactivate);
Прослушиватели:

Код AS3:
static private function onActivate(e:ApplicationEvent):void
{
// ......
}
static private function onDeactivate(e:ApplicationEvent):void
{
// ......
}
При возникновении события и поступления его в прослушиватель пишет "Не могу преобразовать flash.events.Event в ApplicationEvent"!
Если поменять

Код AS3:
static private function onActivate(e:Event):void
{
// ......
}
static private function onDeactivate(e:Event):void
{
// ......
}
то, конечно, всё прекрасно - но это не очень красивый выход
Вообще, при каких условиях flash занимается самостоятельным клонированием события?