             }
         }
 
-        // Populate the legacy selectors Array for this style declaration
-        styleDeclaration.selectorRefCount++;
-        _selectors[selectorKey] = styleDeclaration;
-
         // Also remember subjects that have pseudo-selectors to optimize
         // styles during component state changes.
-        var pseudoSelector:String = styleDeclaration.getPseudoSelector();
-        if (pseudoSelector != null)
+        var pseudoCondition:String = styleDeclaration.getPseudoCondition();
+        if (pseudoCondition != null)
         {
-            if (_pseudoStates == null)
-                _pseudoStates = {};
-
-            _pseudoStates[pseudoSelector] = true;
+            if (_pseudoCSSStates == null)
+                _pseudoCSSStates = {};
+
+            _pseudoCSSStates[pseudoCondition] = true;
         }
 
-        // Record whether this is an advanced selector
+        // Record whether this is an advanced selector so that style declaration
+        // look up can be optimized for when no advanced selectors have been
+        // declared
         if (styleDeclaration.isAdvanced())
             _hasAdvancedSelectors = true;
 


    /**
     * @private
     * Determines whether at least one pseudo-selector has been specified for
     * the given state.
     */ 
    public function hasPseudoSelector(state:String):Boolean
    {
        return _pseudoStates != null && _pseudoStates[state] != null;
    }

    /**
     *  Adds this style declaration to a collection of declarations for the
     *  associated subject.
     *
     *  @param styleDeclaration The style declaration to add.
     *  @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.
     *  
     *  @langversion 3.0
     *  @playerversion Flash 9
     *  @playerversion AIR 1.1
     *  @productversion Flex 3
     */
    public function addStyleDeclaration(styleDeclaration:CSSStyleDeclaration,
            update:Boolean=false):void
    {

        // We index by subject to help match advanced selectors
        var subject:String = styleDeclaration.subject;
        var selectorKey:String = styleDeclaration.selectorString;
        if (subject != null)
        {
            var declarations:Array = _subjects[subject] as Array;

     *  non-global class selector, pseudo selector).
     *  
     *  @langversion 3.0
     *  @playerversion Flash 10
     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */ 
    public function hasAdvancedSelectors():Boolean
    {
