SetParsingCompoundProperty(PR_FALSE);
PRInt32 CSSParserImpl::ParseChoice(nsresult& aErrorCode, nsCSSValue aValues[],                                   const nsCSSProperty aPropIDs[], PRInt32 aNumIDs){  PRInt32 found = 0;  SetParsingCompoundProperty(PR_TRUE);  PRInt32 loop;  for (loop = 0; loop < aNumIDs; loop++) {    // Try each property parser in order    PRInt32 hadFound = found;    PRInt32 index;    for (index = 0; index < aNumIDs; index++) {      PRInt32 bit = 1 << index;      if ((found & bit) == 0) {        if (ParseSingleValueProperty(aErrorCode, aValues[index], aPropIDs[index])) {          found |= bit;        }      }    }    if (found == hadFound) {  // found nothing new      break;    }  }  if (0 < found) {    if (1 == found) { // only first property      if (eCSSUnit_Inherit == aValues[0].GetUnit()) { // one inherit, all inherit        for (loop = 1; loop < aNumIDs; loop++) {          aValues[loop].SetInheritValue();        }        found = ((1 << aNumIDs) - 1);      }      else if (eCSSUnit_Initial == aValues[0].GetUnit()) { // one initial, all initial        for (loop = 1; loop < aNumIDs; loop++) {          aValues[loop].SetInitialValue();        }        found = ((1 << aNumIDs) - 1);      }    }    else {  // more than one value, verify no inherits or initials      for (loop = 0; loop < aNumIDs; loop++) {        if (eCSSUnit_Inherit == aValues[loop].GetUnit()) {          found = -1;          break;        }        else if (eCSSUnit_Initial == aValues[loop].GetUnit()) {          found = -1;          break;        }      }    }  }  SetParsingCompoundProperty(PR_FALSE);  return found;}