     //
     //--------------------------------------------------------------------------
 
+    /**
+     *  Gets the CSSStyleDeclaration object that stores the rules
+     *  for the specified CSS selector.
+     *
+     *  <p>If the <code>selector</code> parameter starts with a period (.),
+     *  the returned CSSStyleDeclaration is a class selector and applies only to those instances
+     *  whose <code>styleName</code> property specifies that selector
+     *  (not including the period).
+     *  For example, the class selector <code>".bigMargins"</code>
+     *  applies to any UIComponent whose <code>styleName</code>
+     *  is <code>"bigMargins"</code>.</p>
+     *
+     *  <p>If the <code>selector</code> parameter does not start with a period,
+     *  the returned CSSStyleDeclaration is a type selector and applies to all instances
+     *  of that type.
+     *  For example, the type selector <code>"Button"</code>
+     *  applies to all instances of Button and its subclasses.</p>
+     *
+     *  <p>The <code>global</code> selector is similar to a type selector
+     *  and does not start with a period.</p>
+     *
+     *  @param selector The name of the CSS selector.
+     *
+     *  @return The style declaration whose name matches the <code>selector</code> property.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function getStyleDeclaration(selector:String):CSSStyleDeclaration;
 	
+    /**
+     *  Sets the CSSStyleDeclaration object that stores the rules
+     *  for the specified CSS selector.
+     *
+     *  <p>If the <code>selector</code> parameter starts with a period (.),
+     *  the specified selector is a "class selector" and applies only to those instances
+     *  whose <code>styleName</code> property specifies that selector
+     *  (not including the period).
+     *  For example, the class selector <code>".bigMargins"</code>
+     *  applies to any UIComponent whose <code>styleName</code>
+     *  is <code>"bigMargins"</code>.</p>
+     *
+     *  <p>If the <code>selector</code> parameter does not start with a period,
+     *  the specified selector is a "type selector" and applies to all instances
+     *  of that type.
+     *  For example, the type selector <code>"Button"</code>
+     *  applies to all instances of Button and its subclasses.</p>
+     *
+     *  <p>The <code>global</code> selector is similar to a type selector
+     *  and does not start with a period.</p>
+     *
+     *  @param selector The name of the CSS selector.
+     *  @param styleDeclaration The new style declaration.
+     *  @param update Set to <code>true</code> to force an immediate update of the styles; internally, Flex
+     *  calls the <code>styleChanged()</code> method of UIComponent.
+     *  Set to <code>false</code> to avoid an immediate update of the styles in the application.
+     * 
+     *  <p>The styles will be updated the next time one of the following methods is called with
+     *  the <code>update</code> property set to <code>true</code>:
+     *  <ul>
+     *   <li><code>clearStyleDeclaration()</code></li>
+     *   <li><code>loadStyleDeclarations()</code></li>
+     *   <li><code>setStyleDeclaration()</code></li>
+     *   <li><code>unloadStyleDeclarations()</code></li>
+     *  </ul>
+     *  </p>
+     * 
+     *  <p>Typically, if you call the one of these methods multiple times, 
+     *  you set this property to <code>true</code> only on the last call,
+     *  so that Flex does not call the <code>styleChanged()</code> method multiple times.</p>
+     * 
+     *  <p>If you call the <code>getStyle()</code> method, Flex returns the style value 
+     *  that was last applied to the UIComponent through a call to the <code>styleChanged()</code> method. 
+     *  The component's appearance might not reflect the value returned by the <code>getStyle()</code> method. This occurs
+     *  because one of these style declaration methods might not yet have been called with the 
+     *  <code>update</code> property set to <code>true</code>.</p>
+     *  
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function setStyleDeclaration(selector:String,
 								styleDeclaration:CSSStyleDeclaration,
 								update:Boolean):void;
 	
+    /**
+     *  Clears the CSSStyleDeclaration object that stores the rules
+     *  for the specified CSS selector.
+     *
+     *  <p>If the specified selector is a class selector (for example, ".bigMargins" or ".myStyle"),
+     *  you must be sure to start the
+     *  <code>selector</code> property with a period (.).</p>
+     *
+     *  <p>If the specified selector is a type selector (for example, "Button"), do not start the
+     *  <code>selector</code> property with a period.</p>
+     *
+     *  <p>The <code>global</code> selector is similar to a type selector
+     *  and does not start with a period.</p>
+     *
+     *  @param selector The name of the CSS selector to clear.
+     *  @param update Set to <code>true</code> to force an immediate update of the styles.
+     *  Set to <code>false</code> to avoid an immediate update of the styles in the application.
+     *  For more information about this method, see the description in the <code>setStyleDeclaration()</code>
+     *  method.
+     *  
+     *  @see #setStyleDeclaration()
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function clearStyleDeclaration(selector:String, update:Boolean):void;
 	
+    /**
+     *  Adds to the list of styles that can inherit values
+     *  from their parents.
+     *
+     *  <p><b>Note:</b> Ensure that you avoid using duplicate style names, as name
+     *  collisions can result in decreased performance if a style that is
+     *  already used becomes inheriting.</p>
+     *
+     *  @param styleName The name of the style that is added to the list of styles that can inherit values.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function registerInheritingStyle(styleName:String):void;
 	
+    /**
+     *  Tests to see if a style is inheriting.
+     *
+     *  @param styleName The name of the style that you test to see if it is inheriting.
+     *
+     *  @return Returns <code>true</code> if the specified style is inheriting.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function isInheritingStyle(styleName:String):Boolean;
 	
+    /**
+     *  Test to see if a TextFormat style is inheriting.
+     *
+     *  @param styleName The name of the style that you test to see if it is inheriting.
+     *
+     *  @return Returns <code>true</code> if the specified TextFormat style
+     *  is inheriting.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function isInheritingTextFormatStyle(styleName:String):Boolean;
 	
+    /**
+     *  Adds to the list of styles which may affect the measured size
+     *  of the component.
+     *  When one of these styles is set with <code>setStyle()</code>,
+     *  the <code>invalidateSize()</code> method is automatically called on the component
+     *  to make its measured size get recalculated later.
+     *
+     *  @param styleName The name of the style that you add to the list.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function registerSizeInvalidatingStyle(styleName:String):void;
 	
+    /**
+     *  Tests to see if a style changes the size of a component.
+     *
+     *  <p>When one of these styles is set with the <code>setStyle()</code> method,
+     *  the <code>invalidateSize()</code> method is automatically called on the component
+     *  to make its measured size get recalculated later.</p>
+     *
+     *  @param styleName The name of the style to test.
+     *
+     *  @return Returns <code>true</code> if the specified style is one
+     *  which may affect the measured size of the component.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function isSizeInvalidatingStyle(styleName:String):Boolean;
 	
+    /**
+     *  Adds to the list of styles which may affect the measured size
+     *  of the component's parent container.
+     *  <p>When one of these styles is set with <code>setStyle()</code>,
+     *  the <code>invalidateSize()</code> method is automatically called on the component's
+     *  parent container to make its measured size get recalculated
+     *  later.</p>
+     *
+     *  @param styleName The name of the style to register.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function registerParentSizeInvalidatingStyle(styleName:String):void;
 	
+    /**
+     *  Tests to see if the style changes the size of the component's parent container.
+     *
+     *  <p>When one of these styles is set with <code>setStyle()</code>,
+     *  the <code>invalidateSize()</code> method is automatically called on the component's
+     *  parent container to make its measured size get recalculated
+     *  later.</p>
+     *
+     *  @param styleName The name of the style to test.
+     *
+     *  @return Returns <code>true</code> if the specified style is one
+     *  which may affect the measured size of the component's
+     *  parent container.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function isParentSizeInvalidatingStyle(styleName:String):Boolean;
 	
+    /**
+     *  Adds to the list of styles which may affect the appearance
+     *  or layout of the component's parent container.
+     *  When one of these styles is set with <code>setStyle()</code>,
+     *  the <code>invalidateDisplayList()</code> method is auomatically called on the component's
+     *  parent container to make it redraw and/or relayout its children.
+     *
+     *  @param styleName The name of the style to register.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function registerParentDisplayListInvalidatingStyle(styleName:String):void;
 	
+    /**
+     *  Tests to see if this style affects the component's parent container in
+     *  such a way as to require that the parent container redraws itself when this style changes.
+     *
+     *  <p>When one of these styles is set with <code>setStyle()</code>,
+     *  the <code>invalidateDisplayList()</code> method is auomatically called on the component's
+     *  parent container to make it redraw and/or relayout its children.</p>
+     *
+     *  @param styleName The name of the style to test.
+     *
+     *  @return Returns <code>true</code> if the specified style is one
+     *  which may affect the appearance or layout of the component's
+     *  parent container.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function isParentDisplayListInvalidatingStyle(styleName:String):Boolean;
 	
+    /**
+     *  Adds a color name to the list of aliases for colors.
+     *
+     *  @param colorName The name of the color to add to the list; for example, "blue".
+     *  If you later access this color name, the value is not case-sensitive.
+     *
+     *  @param colorValue Color value, for example, 0x0000FF.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function registerColorName(colorName:String, colorValue:uint):void;
 	
+    /**
+     *  Tests to see if the given String is an alias for a color value. For example,
+     *  by default, the String "blue" is an alias for 0x0000FF.
+     *
+     *  @param colorName The color name to test. This parameter is not case-sensitive.
+     *
+     *  @return Returns <code>true</code> if <code>colorName</code> is an alias
+     *  for a color.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function isColorName(colorName:String):Boolean;
 	
+    /**
+     *  Returns the numeric RGB color value that corresponds to the
+     *  specified color string.
+     *  The color string can be either a case-insensitive color name
+     *  such as <code>"red"</code>, <code>"Blue"</code>, or
+     *  <code>"haloGreen"</code>, a hexadecimal value such as 0xFF0000, or a #-hexadecimal String
+     *  such as <code>"#FF0000"</code>.
+     *
+     *  <p>This method returns a uint, such as 4521830, that represents a color. You can convert
+     *  this uint to a hexadecimal value by passing the numeric base (in this case, 16), to
+     *  the uint class's <code>toString()</code> method, as the following example shows:</p>
+     *  <pre>
+     *  import mx.styles.StyleManager;
+     *  private function getNewColorName():void {
+     *      StyleManager.registerColorName("soylentGreen",0x44FF66);
+     *      trace(StyleManager.getColorName("soylentGreen").toString(16));
+     *  }
+     *  </pre>
+     *
+     *  @param colorName The color name.
+     *
+     *  @return Returns a uint that represents the color value or <code>NOT_A_COLOR</code>
+     *  if the value of the <code>colorName</code> property is not an alias for a color.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function getColorName(colorName:Object):uint;
 	
+    /**
+     *  Converts each element of the colors Array from a color name
+     *  to a numeric RGB color value.
+     *  Each color String can be either a case-insensitive color name
+     *  such as <code>"red"</code>, <code>"Blue"</code>, or
+     *  <code>"haloGreen"</code>, a hexadecimal value such as 0xFF0000, or a #-hexadecimal String
+     *  such as <code>"#FF0000"</code>..
+     *
+     *  @param colors An Array of color names.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function getColorNames(colors:Array /* of Number or String */):void;
 	
+    /**
+     *  Determines if a specified parameter is a valid style property. For example:
+     *
+     *  <pre>
+     *  trace(StyleManager.isValidStyleValue(myButton.getStyle("color")).toString());
+     *  </pre>
+     *
+     *  <p>This can be useful because some styles can be set to values
+     *  such as 0, <code>NaN</code>,
+     *  the empty String (<code>""</code>), or <code>null</code>, which can
+     *  cause an <code>if (value)</code> test to fail.</p>
+     *
+     *  @param value The style property to test.
+     *
+     *  @return If you pass the value returned by a <code>getStyle()</code> method call
+     *  to this method, it returns <code>true</code> if the style
+     *  was set and <code>false</code> if it was not set.
+     *
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function isValidStyleValue(value:*):Boolean;
     
+    /**
+     *  Loads a style SWF.
+     *
+     *  @param url Location of the style SWF.
+     *
+     *  @param update Set to <code>true</code> to force
+     *  an immediate update of the styles.
+     *  Set to <code>false</code> to avoid an immediate update
+     *  of the styles in the application.
+     *  This parameter is optional and defaults to <code>true</code>
+     *  For more information about this parameter, see the description
+     *  in the <code>setStyleDeclaration()</code> method.
+     *
+     *  @param trustContent Obsolete, no longer used.
+     *  This parameter is optional and defaults to <code>false</code>.
+     *
+     *  @param applicationDomain The ApplicationDomain passed to the
+     *  <code>load()</code> method of the IModuleInfo that loads the style SWF.
+     *  This parameter is optional and defaults to <code>null</code>.
+     *
+     *  @param securityDomain The SecurityDomain passed to the
+     *  <code>load()</code> method of the IModuleInfo that loads the style SWF.
+     *  This parameter is optional and defaults to <code>null</code>.
+     * 
+     *  @return An IEventDispatcher implementation that supports
+     *          StyleEvent.PROGRESS, StyleEvent.COMPLETE, and
+     *          StyleEvent.ERROR.
+     *
+     *  @see #setStyleDeclaration()
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function loadStyleDeclarations(
 					url:String, update:Boolean = true,
 					trustContent:Boolean = false):IEventDispatcher;
     
+    /**
+     *  Unloads a style SWF.
+     *
+     *  @param url Location of the style SWF.
+     *  @param update Set to <code>true</code> to force an immediate update of the styles.
+     *  Set to <code>false</code> to avoid an immediate update of the styles in the application.
+     *  For more information about this method, see the description in the <code>setStyleDeclaration()</code>
+     *  method.
+     *  
+     *  @see #setStyleDeclaration()
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
 	function unloadStyleDeclarations(
 					url:String, update:Boolean = true):void;
 
+    /**
+     *  @private
+     *  This method is called by code autogenerated by the MXML compiler,
+     *  after StyleManager.styles is popuplated with CSSStyleDeclarations.
+     */
 	function initProtoChainRoots():void;
 	
+    /**
+     *  @private
+     *  After an entire selector is added, replaced, or removed,
+     *  this method updates all the DisplayList trees.
+     */
 	function styleDeclarationsChanged():void;
 }
 

	//  inheritingStyles
    //----------------------------------

	function get inheritingStyles():Object;
	function set inheritingStyles(value:Object):void;

    //----------------------------------
	//  stylesRoot
    //----------------------------------

	function get stylesRoot():Object;
	function set stylesRoot(value:Object):void;

    //----------------------------------
	//  typeSelectorCache
    //----------------------------------

	function get typeSelectorCache():Object;
	function set typeSelectorCache(value:Object):void;

    //--------------------------------------------------------------------------
    //


import flash.events.IEventDispatcher;

/**
 *  The IStyleManager class manages the following:
 *  <ul>
 *    <li>Which CSS style properties the class inherits</li>
 *    <li>Which style properties are colors, and therefore get special handling</li>
 *    <li>A list of strings that are aliases for color values</li>
 *  </ul>
 *
 *  This interface was used by Flex 2.0.1.
 *  Flex 3 now uses IStyleManager2 instead.
 *
 *  @see mx.styles.CSSStyleDeclaration
 *  
 *  @langversion 3.0
 *  @playerversion Flash 9
 *  @playerversion AIR 1.1
 *  @productversion Flex 2.0.1
 *  
 */
public interface IStyleManager
{
