     {       
         if (targets.length > 0)
         {
-            // Reset the PropertyChanges array.
-            mx_internal::propertyChangesArray = [];
+            // Reset the PropertyChanges array by passing in 'null'
+            mx_internal::propertyChangesArray = captureValues(null, true);
+
             _callValidateNow = true;
-                        
-            // Create a new PropertyChanges object for the sum of all targets.
-            var n:int = targets.length;
-            for (var i:int = 0; i < n; i++)
-            {
-                mx_internal::propertyChangesArray.push(
-                    new PropertyChanges(targets[i]));
-            }
-            
-            mx_internal::propertyChangesArray =
-                captureValues(mx_internal::propertyChangesArray,true);
         }
         endValuesCaptured = false;
     }

        
        var valueMap:Object;
        var target:Object;      
        var n:int;
        var i:int;
        var m:int;  
        var j:int;
        

        if (targets.length > 0)
        {
            // make temporary PropertyChangesArray
            var additionalPropertyChangesArray:Array = captureValues(null, true);
            
            mx_internal::propertyChangesArray = 
                mx_internal::propertyChangesArray.concat(additionalPropertyChangesArray);
