                 }
             }
         }
+        
+        // and turn on change events again once we're done
+        if (isCollection)
+        {
+            (result as ArrayCollection).enableAutoUpdate();
+        }
 
         // Cycle through the attributes
         var attributes:Object = dataNode.attributes;

        // so what type did we eventually use?
        var resultTypeName:String = getQualifiedClassName(result);
        
        // thus, what type of assignment function should we use?
        var assign:Function;
        
        if (XObjUtils.isTypeArray(resultType) || XObjUtils.isTypeArrayCollection(resultType))
            assign = assignToArray;
        else
            assign = assignToProperty;


                var seenProperties:Object = {};
                var lastPartName:Object = {qname: null, propname: null};
                
                // loop through all children. TODO: break this into async slices 
                // as we did with FilterIndex creation and maintenance?
                
                for (var i:uint = 0; i < children.length; i++)
                {
                    var partNode:XMLNode = children[i];
