 import flash.geom.Vector3D;
 import flash.utils.Timer;
 
+import mx.core.DesignLayer;
 import mx.core.DPIClassification;
 import mx.core.FlexGlobals;
 import mx.core.IUIComponent;

            current.removeEventListener(FlexEvent.HIDE, visibilityChangedHandler, false);
            current.removeEventListener(FlexEvent.SHOW, visibilityChangedHandler, false);
            
            if (current.designLayer)
            {
                current.designLayer.removeEventListener("layerPropertyChange", 
                    designLayer_layerPropertyChangeHandler, false);
            }
            
            current = current.parent as IVisualElement;
        }
    }
    

     */
    private function computeEffectiveVisibility():void
    {
        
        // Check our design layer first.
        if (designLayer && !designLayer.effectiveVisibility)
        {
            effectiveVisibility = false;
            return;
        }
        
        // Start out with true visibility and enablement
        // then loop up parent-chain to see if any of them are false.
        effectiveVisibility = true;
        var current:IVisualElement = this;
        
        while (current)
        {
            if (!current.visible)
            {
                effectiveVisibility = false;
                break;
