 import spark.components.supportClasses.ButtonBarBase;
 import spark.components.supportClasses.ViewNavigatorBase;
 import spark.effects.Animate;
+import spark.effects.Fade;
 import spark.effects.animation.MotionPath;
 import spark.effects.animation.SimpleMotionPath;
 import spark.effects.easing.IEaser;

                transitionGroup.removeElement(cachedActionGroup);
                actionBar.actionGroup.cacheAsBitmap = false;
            }
            
            // Restore title group and title content to their original state.
            if (actionBar && actionBar.titleGroup && actionBar.titleGroup.visible)
                actionBar.titleGroup.cacheAsBitmap = false;
            
            if (actionBar && actionBar.titleDisplay
                && (actionBar.titleDisplay is DisplayObject)
                && DisplayObject(actionBar.titleDisplay).visible)
            {
                DisplayObject(actionBar.titleDisplay).cacheAsBitmap = false;
            }
            
            // Restore title group and title content to their original home.
            if (actionBar && verticalTransition)
            {
                var titleComponent:UIComponent = actionBar.titleGroup;
                if (!titleComponent || !titleComponent.visible)
                    titleComponent = actionBar.titleDisplay as UIComponent;
                
                if (titleComponent)
                {
                    transitionGroup.removeElement(titleComponent);
                    addComponentToContainer(titleComponent, actionBar.skin);
                }
            }
            
            // Restore navigation group to their proper home.
            if (endView.navigationContent && actionBar && verticalTransition)
            {
                transitionGroup.removeElement(actionBar.navigationGroup);
                if (actionBar.titleDisplay)
                {
                    var childIndex:uint = actionBar.skin.getChildIndex(actionBar.titleDisplay as DisplayObject);
                    addComponentToContainerAt(actionBar.navigationGroup, actionBar.skin, childIndex);
                }
                else
                    addComponentToContainer(actionBar.navigationGroup, actionBar.skin);
            }
            
            // Restore action group to their proper home.
            if (endView.actionContent && actionBar && verticalTransition)
            {
                transitionGroup.removeElement(actionBar.actionGroup);
                if (actionBar.titleDisplay)
                {
                    childIndex = actionBar.skin.getChildIndex(actionBar.titleDisplay as DisplayObject);
                    addComponentToContainerAt(actionBar.actionGroup, actionBar.skin, childIndex);
                }
                else
                    addComponentToContainer(actionBar.actionGroup, actionBar.skin);
            }
            
            removeComponentFromContainer(transitionGroup, actionBar.skin);
            
            if (actionBar)
            {
                actionBar.skin.scrollRect = null;
                
                // Force actionBar to update content group positions after

            
            if (titleComponent)
            {
                // Initialize the transformation offests
                transformOffsets = new TransformOffsets();
                transformOffsets[animatedProperty] = slideDistance;
                slideTargets.push(transformOffsets);
                
                // Initialize titleGroup
                titleComponent.cacheAsBitmap = true;
                titleComponent.alpha = 0;
                titleComponent.postLayoutTransformOffsets = transformOffsets;
                fadeInTargets.push(titleComponent);
                
                // We reparent the titleComponent into the transition group so
                // that the items are properly clipped when animating vertically
                if (verticalTransition)
                    transitionGroup.addElementAt(titleComponent, 0);
            }
