      */
     private function get3DSnapshot(transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF, useLocalSpace:Boolean = true):BitmapData
     {
-    	var topLevel:Sprite = Sprite(IUIComponent(parent).systemManager); 
-    	var dispObjParent:DisplayObjectContainer = displayObject.parent;
-    	var drawSprite:Sprite = new Sprite();
+        var topLevel:Sprite = Sprite(IUIComponent(parent).systemManager); 
+        var dispObjParent:DisplayObjectContainer = displayObject.parent;
+        var drawSprite:Sprite = new Sprite();
                 
-    	// Get the visual bounds of the target in both local and global coordinates
+        // Get the visual bounds of the target in both local and global coordinates
         var topLevelRect:Rectangle = displayObject.getBounds(topLevel);
         var displayObjectRect:Rectangle = displayObject.getBounds(dispObjParent);  
         

                
                if (_mask)
                {
                	// If the mask is not parented, then we need to parent it.
                	// Since a mask can not be a child of the maskee, 
                	// we make the mask and maskee siblings. We create a new maskee
                	// called _drawnDisplayObject. Then we attach both the mask 
                	// and maskee to displayObject. 
	                if (!_mask.parent)
	                {
	                	Sprite(displayObject).addChild(_mask);   
	                	var maskComp:UIComponent = _mask as UIComponent;          	
		                if (maskComp)
		                {
		                	if (parent)
		                	{
		                		// Add the mask to the UIComponent document tree. 
		                		// This is required to properly render the mask.
		                		UIComponent(parent).addingChild(maskComp);
		                		UIComponent(parent).childAdded(maskComp);
		                	}
		                	
		                	// Size the mask so that it actually renders
		                    maskComp.validateProperties();
		                    maskComp.validateSize();
		                    // Call this to force the mask to complete initialization
		                    maskComp.invalidateDisplayList();
		                    maskComp.setActualSize(maskComp.getExplicitOrMeasuredWidth(), 
		                                           maskComp.getExplicitOrMeasuredHeight());
				                                           
		                }   
		                
		                if (!_drawnDisplayObject)
						{
							// Clear the original displayObject because it might have previously 
							// drawn the shape. 
							if (displayObject is Sprite)
								Sprite(displayObject).graphics.clear();
							else if (displayObject is Shape)
								Shape(displayObject).graphics.clear();
							
							// Create a new target for the drawing commands
							_drawnDisplayObject = new InvalidatingSprite();
							Sprite(displayObject).addChild(_drawnDisplayObject);
						}    	
	                }
	                
	                drawnDisplayObject.mask = _mask;
                }
            }


    // to captureBitmapData for hit testing.
    mx_internal function set alwaysCreateDisplayObject(value:Boolean):void
    {
        if (value != _alwaysCreateDisplayObject)
        {
            var previous:Boolean = needsDisplayObject;
            _alwaysCreateDisplayObject = value;
            if (previous != needsDisplayObject)
                invalidateDisplayObjectSharing();
        }
    }
    
    mx_internal function get alwaysCreateDisplayObject():Boolean
    {
        return _alwaysCreateDisplayObject;
    }

    /**
