Custom event handler

hi, I want to create some custom event handler, so here is my code at stage
[AS]import getInfo;

var hhh:getInfo = new getInfo();[/AS]

my class getInfo;
[AS]package {
import flash.display.MovieClip;
import flash.events.Event;
import phpInfo;
import getInfoEvent;

public class getInfo extends MovieClip {

    public function getInfo() {
        var url:String = "http://localhost:81/www.theflashblog-bg.com/fcp_v2/bin/php/showPosts.php";
        var php:phpInfo = new phpInfo();
        php.getAllPosts(url);
        addEventListener(getInfoEvent.getXML, heh);
    }
    public function heh(info:getInfoEvent):void {
        trace(">> "+info.xmlArrayData);
    }
}

}[/AS]

get form php ifrmation class: class phpInfo
[AS]package {
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables
import flash.xml.XMLDocument;
import flash.display.Stage;
import flash.display.MovieClip;

import getInfoEvent;
import getInfo;
public class phpInfo extends MovieClip{

    public static const readyXML:String = "readyXML";
    public var query:String;
    public var id:String;
    public var ArrayOfInfo:Array = new Array();
    private var phpLoader:URLLoader = new URLLoader();
    private var request_:URLRequest = new URLRequest();
    private var varsToSend:URLVariables = new URLVariables();        
    
    
    public function phpInfo():void {
        request_.method = URLRequestMethod.POST;
        phpLoader.dataFormat = URLLoaderDataFormat.TEXT;
    }
    public function getAllPosts(url:String):void {
        request_.url = url;
        //set needed info
        varsToSend.hostnam = "localhost";
        varsToSend.database = "theblog";
        varsToSend.username = "tAdmin";
        varsToSend.password = "tpass";
        //
        request_.data = varsToSend;
        phpLoader.addEventListener(Event.COMPLETE, getAllPosts_COMPLETED);
        phpLoader.load(request_);
    }
    private function getAllPosts_COMPLETED(info:Event):void {
        var gallery_xml:XMLDocument = new XMLDocument();
        gallery_xml.ignoreWhite = true;
        gallery_xml.parseXML(phpLoader.data);
        var i:uint;
        var al:Number = gallery_xml.firstChild.childNodes.length;
        for (i=0;i<al;i++) {
            ArrayOfInfo.push(new Array(gallery_xml.firstChild.childNodes*.attributes["id"], gallery_xml.firstChild.childNodes*.attributes["date"], gallery_xml.firstChild.childNodes*.attributes["title"], gallery_xml.firstChild.childNodes*.attributes["author"], gallery_xml.firstChild.childNodes*.attributes["view"], gallery_xml.firstChild.childNodes*.attributes["categry"], gallery_xml.firstChild.childNodes*.attributes["attach"], gallery_xml.firstChild.childNodes*.attributes["image"], gallery_xml.firstChild.childNodes*.attributes["comments"]));
        }
        this.dispatchEvent(new getInfoEvent(getInfoEvent.getXML, ArrayOfInfo));
        
    }
}

}[/AS]

event class:class getInfoEvent
[AS]package {
import flash.events.Event;

public class getInfoEvent extends Event{
    public static const getXML:String = "getXML";
    public var xmlArray:Array = new Array();
    
    public function get xmlArrayData():Array {
        return xmlArray;
    }
    public function getInfoEvent(type:String, gotData:Array):void {
        xmlArray = gotData;
        super(type, true);
        trace(xmlArray);
    }
    public override function clone():Event {
        trace("<<>>");
        return new getInfoEvent(type, xmlArray);
        
    }

}

}[/AS]

So, what is the problem. The problem is that in function getInfoEvent(), it trace me the array correctly, but this clone(), don’t trace “<<>>”, and I don’t have function heh() trace too. What is wrong?