         }
     }
     
+    /**
+     *  @private
+     *  Applies the start values found in the array of PropertyChanges
+     *  to the relevant targets.
+     */
+    mx_internal function applyEndValues(propChanges:Array,
+                                    targets:Array):void
+    {
+        // For now, only new Flex4 effects will apply end values when transitions
+        // are over, to preserve the previous behavior of Flex3 effects
+        if (!applyTransitionEndProperties)
+            return;
+            
+        var effectProps:Array = relevantProperties;
+                    
+        var n:int = propChanges.length;
+        for (var i:int = 0; i < n; i++)
+        {
+            var m:int;
+            var j:int;
+
+            var target:Object = propChanges[i].target;
+            var apply:Boolean = false;
+            
+            m = targets.length;
+            for (j = 0; j < m; j++)
+            {
+                if (targets[j] == target)
+                {   
+                    apply = filterInstance(propChanges, target);
+                    break;
+                }
+            }
+            
+            if (apply)
+            {
+                // Walk the properties in the target
+                m = effectProps.length;
+                for (j = 0; j < m; j++)
+                {
+                    if (effectProps[j] in propChanges[i].end &&
+                        effectProps[j] in target)
+                    {
+                        applyValueToTarget(target, effectProps[j],
+                                propChanges[i].end[effectProps[j]],
+                                propChanges[i].end);
+                    }
+                }
+                
+                // Walk the styles in the target
+                m = relevantStyles.length;
+                for (j = 0; j < m; j++)
+                {
+                    trace("relevantStyles[j] = " + relevantStyles[j]);
+                    if (relevantStyles[j] in propChanges[i].end &&
+                        target is IStyleClient)
+                    {
+                        trace("AnimProp: style, value = " + relevantStyles[j] + ", " +
+                            propChanges[i].end[relevantStyles[j]]);
+                        target.setStyle(relevantStyles[j], propChanges[i].end[relevantStyles[j]]);
+                    }
+                }
+            }
+        }
+    }
     
     /**
      *  Used internally by the Effect infrastructure.

            // Revalidate after applying the start values, to get everything
            // back the way it should be before starting the animation
            LayoutManager.getInstance().validateNow();
        }
        
        var newInstances:Array = createInstances(targets);

        deleteInstance(instance);

        dispatchEvent(event);

        // Transitions should set the end values when done
        if (applyEndValuesWhenDone)   
            applyEndValues(mx_internal::propertyChangesArray, targets);
    }

}
