Index: /lang/actionscript/ascss/src/SelectTest.as
===================================================================
--- /lang/actionscript/ascss/src/SelectTest.as (revision 10941)
+++ /lang/actionscript/ascss/src/SelectTest.as (revision 10942)
@@ -98,4 +98,7 @@
 			sel.matchRules(authorStyle, indexes);
 
+			puts("-- selector specificity order --");
+			sel.dumpMatchedRules();
+
 			puts("-- apply decls --");
 			// first pass
Index: /lang/actionscript/ascss/src/css/CSSSelector.as
===================================================================
--- /lang/actionscript/ascss/src/css/CSSSelector.as (revision 10932)
+++ /lang/actionscript/ascss/src/css/CSSSelector.as (revision 10942)
@@ -256,4 +256,48 @@
 		}
 
+
+		public function get selectorText():String
+		{
+			var str:String = "";
+			
+			const prefix:String    = m_tag.prefix;
+			const localName:String = m_tag.localName;
+			if (m_match == None || prefix != null || localName != '*') {
+				if (prefix == null)
+					str = localName;
+				else
+					str = prefix + "|" + localName;
+			}
+
+			var cs:CSSSelector = this;
+			while (true) {
+				if (cs.m_match == Id) {
+					str += "#";
+					str += cs.m_value;
+				} else if (cs.m_match == Class) {
+					str += ".";
+					str += cs.m_value;
+				}
+
+				if (cs.relation != SubSelector || !cs.m_tagHistory)
+					break;
+				cs = cs.m_tagHistory;
+			}
+
+			if (cs.m_tagHistory) {
+				var tagHistoryText:String = cs.m_tagHistory.selectorText;
+				if (cs.relation == DirectAdjacent)
+					str = tagHistoryText + " + " + str;
+				else if (cs.relation == IndirectAdjacent)
+					str = tagHistoryText + " ~ " + str;
+				else if (cs.relation == Child)
+					str = tagHistoryText + " > " + str;
+				else
+				// Descendant
+				str = tagHistoryText + " " + str;
+			}
+			return str;
+		}
+
 	}
 }
Index: /lang/actionscript/ascss/src/css/CSSStyleSelector.as
===================================================================
--- /lang/actionscript/ascss/src/css/CSSStyleSelector.as (revision 10941)
+++ /lang/actionscript/ascss/src/css/CSSStyleSelector.as (revision 10942)
@@ -151,5 +151,5 @@
 	for each(var r:CSSRuleData in mMatchedRules)
 	{
-		SelectTest.puts("sp="+r.selector.specificity+" "+r.selector.dump());
+		SelectTest.puts("sp="+r.selector.specificity+" "+r.selector.selectorText);
 	}
 }
@@ -233,5 +233,5 @@
 							aRuleIndexes[FIRST] = aRuleIndexes[LAST];
 						
-SelectTest.puts("selector matched for <"+localName+">");
+SelectTest.puts("selector '"+ rule.selector.selectorText +"' matched for <"+localName+">");
 						// Add this rule to our list of matched rules.
 						addMatchedRule(d);
@@ -261,5 +261,5 @@
 				return SelectorFailsLocally;
 
-SelectTest.puts("single selector check passed  sel="+sel.dump());
+//SelectTest.puts("single selector check passed  sel="+sel.dump());
 
 		    // The rest of the selectors has to match
Index: /lang/actionscript/ascss/src/css/QualifiedName.as
===================================================================
--- /lang/actionscript/ascss/src/css/QualifiedName.as (revision 10771)
+++ /lang/actionscript/ascss/src/css/QualifiedName.as (revision 10942)
@@ -17,4 +17,9 @@
 			mLocalName = l;
 			mNamespace = n;
+		}
+
+		public function get prefix():String
+		{
+			return mPrefix;
 		}
 
