      */
     override public function addChildAt(item:DisplayObject, index:int):DisplayObject
     {
+        addingChildren = true;
         var obj:DisplayObject = super.addChildAt(item, index);
         internalDispatchEvent(CollectionEventKind.ADD, obj, index);
+        childAddHandler(item);
+        addingChildren = false;
         return obj;
     }
 

        // been proposed, then propose this child to be selected.
        if (numChildren == 1 && proposedSelectedIndex == -1)
        {
            selectedIndex = 0;
        } 
        else if (index <= selectedIndex && numChildren > 1 && proposedSelectedIndex == -1)         
        {
            selectedIndex++;
        }

        if (child is IAutomationObject)

            }
            else
            {
                _selectedIndex--;
                dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
            }
        }
        else if (index == currentSelectedIndex)
