I have been tracing this bug for two days and finally found it. I don't see how this .normalize method is changing data in other areas of my code?
So when makeData is called I pass it xml with child nodes. It is stored in _data and then I se several variables and call the the buildXMLObj method. When inside the buildXMLObj when the line with .normalize is run my variable _data (now only contains parent nodes with out the children). The buildXMLObj removes children but it is never assigned to _data so how is _data getting changed? package { public class DataDelegate { import mx.rpc.AsyncToken; import mx.utils.ObjectUtil; import com.models.ViewModelLocator; private var modelLocator:ViewModelLocator = ViewModelLocator.getInstance(); private var _newSelected:int = 0; private var midXML:XMLList; private var _data:XMLList; public function DataDelegate(){ } private function buildXMLObj(xmllist:XMLList):void { var copyOfList:XML = <groups/>; for each (var xl:XML in xmllist) { if (xl.length()) { xl.replace("*", ""); } copyOfList.appendChild(xl); } copyOfList = copyOfList.normalize(); midXML = copyOfList.descendants("*"); } public function makeData(datas:XML):void { trace("MakeData was called ---------------------------------------------------"); var _data:XML = datas; modelLocator.selected = -1; var xml:XML = datas as XML; var _newSelected:int; var comps:XMLList = xml.group.component; buildXMLObj(xml.group); var groups:XMLList = midXML; if (modelLocator.comps.length() > 0) { _newSelected = parseInt([EMAIL PROTECTED]); modelLocator.selected = _newSelected; } /* modelLocator.allDataArr.splice(_newSelected,1); */ modelLocator.allDataArr[_newSelected] = _data; modelLocator.comps = comps; modelLocator.groups = groups; } } }