     public function handle(eventType:String, listener:Function,
         useCapture:Boolean = false, priority:int = 0):EventTask
     {
+        if (listened)
+            throw new IllegalOperationError("listen() must be the last method called");
+
         listeners.push(new ListenerDescriptor(eventType, listener, useCapture, priority));
         return this;
     }

        {
            target.removeEventListener(eventType, onTerminate, false);
        }
        active = false;
        return this;
    }

    private function onTerminate(event:Event):void
    {
        if (active)
        {
            unlisten();
            destroy();

{
import org.yellcorp.lib.core.Set;

import flash.errors.IllegalOperationError;
import flash.events.Event;
import flash.events.IEventDispatcher;

