NS_IF_RELEASE(idAtom);
CSSRuleProcessor::RulesMatching(nsIPresContext* aPresContext,                                nsIAtom* aMedium,                                 nsIContent* aParentContent,                                nsIAtom* aPseudoTag,                                nsIStyleContext* aParentContext,                                nsISupportsArray* aResults){  NS_PRECONDITION(nsnull != aPresContext, "null arg");  NS_PRECONDITION(nsnull != aPseudoTag, "null arg");  NS_PRECONDITION(nsnull != aResults, "null arg");  RuleCascadeData* cascade = GetRuleCascade(aMedium);  if (cascade) {    PseudoEnumData data(aPresContext, aParentContent, aPseudoTag, aParentContext, aResults);    cascade->mRuleHash.EnumerateTagRules(aPseudoTag, PseudoEnumFunc, &data);#ifdef DEBUG_RULES    nsISupportsArray* list1;    nsISupportsArray* list2;    NS_NewISupportsArray(&list1);    NS_NewISupportsArray(&list2);    data.mResults = list1;    cascade->mRuleHash.EnumerateTagRules(aPseudoTag, PseudoEnumFunc, &data);    data.mResults = list2;    cascade->mWeightedRules->EnumerateBackwards(PseudoEnumWrap, &data);    NS_ASSERTION(list1->Equals(list2), "lists not equal");    NS_RELEASE(list1);    NS_RELEASE(list2);#endif  }  return NS_OK;}