nsCSSUnit unit = (mToken.mIdent.EqualsIgnoreCase("counter") ?
nsCSSUnit unit = (mToken.mIdent.LowerCaseEqualsLiteral("counter") ?
PRBool CSSParserImpl::ParseCounter(nsresult& aErrorCode, nsCSSValue& aValue){  nsCSSUnit unit = (mToken.mIdent.EqualsIgnoreCase("counter") ?                     eCSSUnit_Counter : eCSSUnit_Counters);  if (ExpectSymbol(aErrorCode, '(', PR_FALSE)) {    if (GetToken(aErrorCode, PR_TRUE)) {      if (eCSSToken_Ident == mToken.mType) {        nsAutoString  counter;        counter.Append(mToken.mIdent);        if (eCSSUnit_Counters == unit) {          // get mandatory string          if (! ExpectSymbol(aErrorCode, ',', PR_TRUE)) {            return PR_FALSE;          }          if (GetToken(aErrorCode, PR_TRUE) && (eCSSToken_String == mToken.mType)) {            counter.Append(PRUnichar(','));            counter.Append(mToken.mSymbol); // quote too            counter.Append(mToken.mIdent);            counter.Append(mToken.mSymbol); // quote too          }          else {            UngetToken();            return PR_FALSE;          }        }        // get optional type        if (ExpectSymbol(aErrorCode, ',', PR_TRUE)) {          if (GetToken(aErrorCode, PR_TRUE) && (eCSSToken_Ident == mToken.mType)) {            nsCSSKeyword keyword = nsCSSKeywords::LookupKeyword(mToken.mIdent);            if ((eCSSKeyword_UNKNOWN < keyword) &&                 (0 < SearchKeywordTable(keyword, nsCSSProps::kListStyleKTable))) {              counter.Append(PRUnichar(','));              counter.Append(mToken.mIdent);            }            else {              return PR_FALSE;            }          }          else {            UngetToken();            return PR_FALSE;          }        }        if (ExpectSymbol(aErrorCode, ')', PR_TRUE)) {          aValue.SetStringValue(counter, unit);          return PR_TRUE;        }      }      else {        UngetToken();      }    }  }  return PR_FALSE;}