 
     //--------------------------------------------------------------------------
     //
-    //  Class constants
-    //
-    //--------------------------------------------------------------------------
-    
-    /**
-     *  @private
-     */
-    private static const CONTROLS_PROPERTY_FLAG:uint = 1 << 0;
-
-    /**
-     *  @private
-     */
-    private static const LAYOUT_PROPERTY_FLAG:uint = 1 << 1;
-
-    //--------------------------------------------------------------------------
-    //
     //  Constructor
     //
     //--------------------------------------------------------------------------

        {
            titleDisplay.text = title;
        }
        else if (instance == controlGroup)
        {
            // copy proxied values from controlGroupProperties (if set) to contentGroup
            var newControlGroupProperties:uint = 0;
            
            if (controlGroupProperties.controls !== undefined)
            {
                controlGroup.mxmlContent = controlGroupProperties.controls;
                newControlGroupProperties = BitFlagUtil.update(newControlGroupProperties, 
                                                               CONTROLS_PROPERTY_FLAG, true);
            }

            if (controlGroupProperties.layout !== undefined)
            {
                controlGroup.layout = controlGroupProperties.layout;
                newControlGroupProperties = BitFlagUtil.update(newControlGroupProperties, 
                                                               LAYOUT_PROPERTY_FLAG, true);
            }

            controlGroupProperties = newControlGroupProperties;
        }
    }

    /**
     *  @inheritDoc
     *  
     *  @langversion 3.0
     *  @playerversion Flash 10
     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */
    override protected function partRemoved(partName:String, instance:Object):void
    {
        super.partRemoved(partName, instance);

        if (instance == controlGroup)
        {
            // copy proxied values from contentGroup (if explicitely set) to contentGroupProperties
            
            var newControlGroupProperties:Object = {};
            
            if (BitFlagUtil.isSet(controlGroupProperties as uint, CONTROLS_PROPERTY_FLAG))
                newControlGroupProperties.controls = controlGroup.getMXMLContent();
            
            if (BitFlagUtil.isSet(controlGroupProperties as uint, LAYOUT_PROPERTY_FLAG))
                newControlGroupProperties.layout = controlGroup.layout;
            
            controlGroupProperties = newControlGroupProperties;

            controlGroup.mxmlContent = null;
            controlGroup.layout = null;
        }
    }

    /**
     *  @inheritDoc
     *  
     *  @langversion 3.0
     *  @playerversion Flash 10
     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */
    override protected function getCurrentSkinState():String
    {
        var state:String = enabled ? "normal" : "disabled";
        if (controlGroup)
        {
            if (BitFlagUtil.isSet(controlGroupProperties as uint, CONTROLS_PROPERTY_FLAG))
                state += "WithControls";
        }
        else
        {
            if (controlGroupProperties.controls)
                state += "WithControls";
        }

        return state;
    }
}


    //  Properties 
    //
    //--------------------------------------------------------------------------

    //----------------------------------
    //  titleField
