         removeState(_currentState, commonBaseState);
         _currentState = requestedCurrentState;
 
-        // Update styles
-        //if (StyleManager.hasPseudoSelector(className))
-        //   regenerateStyleCache(false);
+        // Update state specific styles
+        applyStateStyles(oldState, _currentState, true);
 
         // If we're going back to the base state, dispatch an
         // enter state event, otherwise apply the state.

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

    /**
     *  A component's parent is used to evalate descendant selectors. A parent
     *  must also be an IAdvancedStyleClient to participate in advanced style
     *  declarations.

    public function get styleParent():IAdvancedStyleClient
    {
        return parent as IAdvancedStyleClient;
    }

    /**
     *  Apply state-specific styles to this component. If there is a chance
     *  of a matching CSS pseudo-selector for the current state, the style
     *  cache needs to be regenerated for this instance and, potentially all
     *  children, if the recursive param is set to true.
     */
    public function applyStateStyles(oldState:String, newState:String, recursive:Boolean):void
    {
        if (pseudoSelectorState && oldState != newState &&
               (StyleManager.hasPseudoSelector(oldState) ||
                StyleManager.hasPseudoSelector(newState)))
        {
            regenerateStyleCache(recursive);
            initThemeColor();
            styleChanged(null);
            notifyStyleChangeInChildren(null, recursive);
        }
    }

    /**
