         
         return null;
     }
-    
-    //--------------------------------------------------------------------------
-    //
-    //  Methods - Part Metadata
-    //
-    //--------------------------------------------------------------------------
-    
-    /**
-     *  @private
-     *  Cache of found skin parts.
-     */
-    private static var skinPartsByClassName:Dictionary;
-    
-    /**
-     *  @private
-     *  Find the skin part metadata for a given className.
-     */
-    private function getSkinPartMetadata(className:String):Array
-    {
-        // Check cached values first
-        if (!skinPartsByClassName)
-            skinPartsByClassName = new Dictionary(true);
-            
-        var skinParts:Array = skinPartsByClassName[className];
-        
-        if (skinParts != null)
-            return skinParts;
-            
-        var myApplicationDomain:ApplicationDomain;
-        
-        var factory:IFlexModuleFactory = ModuleManager.getAssociatedFactory(this);
-        if (factory != null)
-        {
-            myApplicationDomain = ApplicationDomain(factory.info()["currentDomain"]);
-        }
-        else
-        {
-            myApplicationDomain = systemManager ? 
-                                    systemManager.loaderInfo.applicationDomain :
-                                    ApplicationDomain.currentDomain;
-        }
-        
-        // If the application domain is null it is because the application that this
-        // component lives in has been unloaded.
-        if (myApplicationDomain == null)
-            return null;
-            
-        var type:Class = myApplicationDomain.getDefinition(className) as Class;             
-        skinParts = new Array;
-        
-        var des:XML = flash.utils.describeType(type);
-
-        // Find Part metadata on variables 
-        var metadata:XMLList = des.factory.variable.metadata.(@name == "SkinPart");
-        var skinPartInfo:SkinPartInfo;
-        var i:int;
-        
-        for (i = 0; i < metadata.length(); i++)
-        {
-            skinPartInfo = new SkinPartInfo();
-            
-            skinPartInfo.id = metadata[i].parent().@name;
-            skinPartInfo.required = !(metadata[i].arg.(@key == "required").@value == "false");
-            skinParts.push(skinPartInfo);
-        }
-
-        // Find Part metadata on getter/setters 
-        metadata = des.factory.accessor.metadata.(@name == "SkinPart");
-        for (i = 0; i < metadata.length(); i++)
-        {
-            skinPartInfo = new SkinPartInfo();
-            
-            skinPartInfo.id = metadata[i].parent().@name;
-            skinPartInfo.required = !(metadata[i].arg.(@key == "required").@value == "false");
-            skinParts.push(skinPartInfo);
-        }
-        
-        skinPartsByClassName[className] = skinParts;
-        return skinParts;           
-    }
 
     //---------------------------------
     //  Utility methods for subclasses

     */
    private function skin_propertyChangeHandler(event:PropertyChangeEvent):void
    {
        var className:String = getQualifiedClassName(this);
        var parts:Array = getSkinPartMetadata(className);
        
        if (parts)
        {
            for (var i:int = 0; i < parts.length; i++)
            {
                var skinPart:SkinPartInfo = parts[i];
                
                if (event.property == skinPart.id)
                {
                    this[skinPart.id] = event.newValue;
                    
                    if (!(this[skinPart.id] is IFactory))
                        partAdded(skinPart.id, this[skinPart.id]);
                    break;
                }
            }
        }
    }

     */
    protected function clearSkinParts():void
    {
        if (skinParts)
        {
            for (var id:String in skinParts)
            {
                if (this[id] != null)
                {
                    if (!(this[id] is IFactory))
                    {
                        partRemoved(id, this[id]);
                    }
                    else
                    {
                        var len:int = numDynamicParts(id);
                        for (var j:int = 0; j < len; j++)
                            removeDynamicPartInstance(id, getDynamicPartAt(id, j));
                    }
                }
              
                this[id] = null;
            }
        }
    }
