         // because of the considerably more complex selector matches...
         if (StyleManager.hasAdvancedSelectors() && advancedObject != null)
         {
-            // Find matching universal selectors
-            var decls:Object = StyleManager.getStyleDeclarations("*");
-            universalSelectors = getMatchingStyleDeclarations(decls, advancedObject).concat(universalSelectors);
-
-            // If we had universal selectors, concatenate them with our type
-            // selectors and resort by specificity...
-            if (universalSelectors.length > 0)
-            {
-                styleDeclarations = advancedObject.getClassStyleDeclarations().concat(universalSelectors);
-                styleDeclarations = sortOnSpecificity(styleDeclarations);
-            }
-            else
-            {
-                // We only have type selectors
-                styleDeclarations = advancedObject.getClassStyleDeclarations();
-            }
+            styleDeclarations = getMatchingStyleDeclarations(advancedObject, universalSelectors);
 
             n = styleDeclarations != null ? styleDeclarations.length : 0;
             for (i = 0; i < n; i++)
             {
                 styleDeclaration = styleDeclarations[i];
-                
-                inheritChain =
-                    styleDeclaration.addStyleToProtoChain(inheritChain, uicObject);
-    
-                nonInheritChain =
-                    styleDeclaration.addStyleToProtoChain(nonInheritChain, uicObject);
+                inheritChain = styleDeclaration.addStyleToProtoChain(inheritChain, uicObject);
+                nonInheritChain = styleDeclaration.addStyleToProtoChain(nonInheritChain, uicObject);
 
                 if (styleDeclaration.effects)
-                    object.registerEffects(styleDeclaration.effects);
+                    advancedObject.registerEffects(styleDeclaration.effects);
             }
         }
         // Otherwise we use the legacy Flex 3 logic for simple selectors.

            for (i = 0; i < n; i++)
            {
                styleDeclaration = styleDeclarations[i];
                
                inheritChain =
                    styleDeclaration.addStyleToProtoChain(inheritChain, uicObject);
    
                nonInheritChain =
                    styleDeclaration.addStyleToProtoChain(nonInheritChain, uicObject);
    
                if (styleDeclaration.effects)
                    object.registerEffects(styleDeclaration.effects);
            }

                var decls:Object = StyleManager.getStyleDeclarations(type);
                if (decls)
                {
                    var matchingDecls:Array = matchStyleDeclarations(decls, advancedObject);
                    classDecls = classDecls.concat(matchingDecls);
                }
            }
