             {
                 var parentStart:* = propertyChanges.start["parent"];
                 var parentEnd:* = propertyChanges.end["parent"];
+                if (playReversed)
+                {
+                    var tmp:* = parentStart;
+                    parentStart = parentEnd;
+                    parentEnd = tmp;
+                }
                 if (parentStart && !parentEnd && 
                     (parentStart is IVisualElementContainer || parentStart is SystemManager))
                 {
-                    var startIndex:* = propertyChanges.start["index"];
+                    var startIndex:* = !playReversed ? 
+                        propertyChanges.start["index"] :
+                        propertyChanges.end["index"];
                     if (parentStart is IVisualElementContainer)
                     {
                         var startContainer:IVisualElementContainer = 

        animation.startDelay = startDelay;
        
        animation.play();
    }

    /**

            // the same target
            if ("parent" in target && target.parent)
            {
                var parentStart:* = propertyChanges.start["parent"];
                var parentEnd:* = propertyChanges.end["parent"];
                if (playReversed)
                {
                    var tmp:* = parentStart;
                    parentStart = parentEnd;
                    parentEnd = tmp;
                }
                if (parentStart && !parentEnd)
                {
                    if (parentStart is IVisualElementContainer)
