Alex Lexcuk, а зачем вместо?
Зачем вообще такие утопичные классы?
Всё делается элементарно и без каких-либо костылей вроде LexEvent, кастомных событий и другой чуши:

Код AS3:
package {
import flash.display.*
import flash.events.*;
import flash.text.*;
public class SimButton extends SimpleButton {
public function SimButton(){
super();
}
/**
* @private
*/
private var _label:String;
public function get label():String {
return this._label;
}
public function set label(value:String):void {
if (this._label == value) return;
this._label = value;
((super.upState as DisplayObjectContainer).getChildAt(1) as TextField).text = value;
((super.downState as DisplayObjectContainer).getChildAt(1) as TextField).text = value;
((super.overState as DisplayObjectContainer).getChildAt(1) as TextField).text = value;
}
}
}

Код AS3:
package {
import flash.display.*
import flash.events.*;
import flash.text.*;
public class DocEventCustom extends Sprite {
public function DocEventCustom(){
super();
var i:uint;
var j:uint = 0;
var l:uint = super.numChildren;
var o:DisplayObject;
for (i = 0; i< l; i++) {
o = super.getChildAt(i);
if (o is SimButton) {
(o as SimButton).label = this._labels[j];
j++;
if (j >= this._labels.length) break;
}
}
super.addEventListener(MouseEvent.CLICK, this.handler_click);
}
/**
* @private
*/
private const _labels:Array = new Array("один","два","три","четыре","пять","шесть","семь");
/**
* @private
*/
private function handler_click(event:MouseEvent):void {
if (event.target is SimButton) {
trace((event.target as SimButton).label);
}
}
}
}