      *  most simple type selector in a potential chain of selectors.
      *  
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get subject():String
     {
-        return _subject; 
+        if (_selector != null)
+        {
+            // Check for an implicit universal selector which omits *
+            // for the subject but includes conditions.
+            if (_selector.subject == "" && _selector.conditions)
+                return "*";
+            else
+                return _selector.subject;
+        }
+
+        return null;
     }
 
     //--------------------------------------------------------------------------

    /**
     *  Constructor.
     *
     *  @param subject If not null, this CSSStyleDeclaration will be registered
     *  with StyleManager. If the selector argument is not also specified,
     *  this String is interpreted to be the legacy syntax of a String based
     *  selector; if the value starts with a dot it is interpreted as a global
     *  class selector, otherwise it represents a simple type selector.
     *  @param selector The selector chain used to match IAdvancedStyleClient
     *  components to this style declaration.
     *  
     *  @langversion 3.0
     *  @playerversion Flash 9
     *  @playerversion AIR 1.1
     *  @productversion Flex 3
     */
    public function CSSStyleDeclaration(subject:String=null, selector:CSSSelector=null)
    {
        super();

        if (subject)
        {
            if (selector)
            {
                _subject = subject;
                _selector = selector;
                _specificity = _selector.specificity;
            }
            else
            {
                // A legacy Flex 3 styled constructor was used...
                selectorString = subject;
            }

            // do not reference StyleManager directly because this is a bootstrap class
            styleManager = Singleton.getInstance("mx.styles::IStyleManager3") as IStyleManager3;
            styleManager.addStyleDeclaration(this, false);
        }
    }



    /**
     *  @private
     *  This Dictionary keeps track of all the style name/value objects
     *  produced from this CSSStyleDeclaration and already inserted into
     *  prototype chains. Whenever this CSSStyleDeclaration's overrides object
     *  is updated by setStyle(), these clone objects must also be updated.
