RAPTOR_STOPWATCH_DEBUGTRACE(("Stop: StyleSetImpl::ProbePseudoStyleFor(), this=%p\n", this));
nsIStyleContext* StyleSetImpl::ProbePseudoStyleFor(nsIPresContext* aPresContext,                                                   nsIContent* aParentContent,                                                   nsIAtom* aPseudoTag,                                                   nsIStyleContext* aParentContext,                                                   PRBool aForceUnique){  NS_START_STOPWATCH(mStyleResolutionWatch)  nsIStyleContext*  result = nsnull;  NS_ASSERTION(aPseudoTag, "must have pseudo tag");  NS_ASSERTION(aPresContext, "must have pres context");  if (aPseudoTag && aPresContext) {    if (! mRuleProcessors) {      GatherRuleProcessors();    }    if (mRuleProcessors) {      nsISupportsArray*  rules = nsnull;      if (EnsureArray(&rules)) {        nsIAtom* medium = nsnull;        aPresContext->GetMedium(&medium);        PseudoRulesMatchingData data(aPresContext, medium, aParentContent,                                      aPseudoTag, aParentContext, rules);        mRuleProcessors->EnumerateForwards(EnumPseudoRulesMatching, &data);        PRBool usedRules = PR_FALSE;        PRUint32 ruleCount;        rules->Count(&ruleCount);        if (0 < ruleCount) {          SortRulesByStrength(rules);          result = GetContext(aPresContext, aParentContext, aPseudoTag, rules, aForceUnique, usedRules);          if (usedRules) {            NS_ASSERT_REFCOUNT(rules, 2, "rules array was used elsewhere");            NS_RELEASE(rules);          }          else {            NS_ASSERT_REFCOUNT(rules, 1, "rules array was used elsewhere");            rules->Clear();            RecycleArray(&rules);          }        }        else {          NS_ASSERT_REFCOUNT(rules, 1, "rules array was used elsewhere");          RecycleArray(&rules);        }        NS_IF_RELEASE(medium);      }    }  }  NS_STOP_STOPWATCH(mStyleResolutionWatch)  return result;}