Доброго всем времени суток.
Подскажите, пожалуйста.
К примеру есть

Код AS3:
<mx:Script><![CDATA[
[Bindable]
private var bt:Button=new Button();
[Bindable]
public var menuCollection:XMLListCollection; // создается на основе dataXML
private function changeHandler(event:MenuEvent):void{
var ob:Button = Button(event.item.@data); //летит исключение
}
private function init():void{ //инициализирующий метод
menuCollection = new XMLListCollection(new XMLList(dataXML));
}
]]></mx:Script>
<mx:XML id="dataXML">
<menuitem label="Menu1">
<menuitem label="Test" type="check" data="{bt}"/>
<menuitem type="separator"/>
<menuitem label="Test" type="check" data="yes">
<menuitem label="one" group="gr1" type="radio"/>
<menuitem label="two" group="gr1" type="radio"/>
</menuitem>
<menuitem label="Test" type="check" data="yes"/>
</menuitem>
</mx:XML>
<mx:MenuBar labelField="label" dataProvider="{menuCollection}" itemClick="changeHandler(event)"/>
Вопрос в том, что, судя по всему, к любому объектув <mx:XML> применяется toString()? Потому что в методе changeHandler event.item.@data равна bt.toString() - причем toString применен к изначально созданной кнопке, изменения ее свойства label в методе init() не фиксируются.
Если исопльзовать ArrayCollection - все в порядке. В метод changeHandler приходит event.item.data = Button. Причем изменения свойства label у Button фиксируются.
Это так и надо?

Никак я не могу присвоить какому-то атрибуту свойство-объект?
Заранее благодарен.