aDeclaration->AddValue(kClipNames[i], nsCSSValue(eCSSUnit_Inherit));
aDeclaration->AppendValue(kClipNames[i], nsCSSValue(eCSSUnit_Inherit));
PRBool CSSParserImpl::ParseClip(PRInt32* aErrorCode, nsICSSDeclaration* aDeclaration){  static const char* kClipNames[] = {    "clip-top",    "clip-right",    "clip-bottom",    "clip-left",  };  nsString* ident = NextIdent(aErrorCode);  if (nsnull == ident) {    return PR_FALSE;  }  if (ident->EqualsIgnoreCase("auto")) {    for (int i = 0; i < 4; i++) {      aDeclaration->AddValue(kClipNames[i], nsCSSValue(eCSSUnit_Auto));    }    return PR_TRUE;  } else if (ident->EqualsIgnoreCase("inherit")) {    for (int i = 0; i < 4; i++) {      aDeclaration->AddValue(kClipNames[i], nsCSSValue(eCSSUnit_Inherit));    }    return PR_TRUE;  } else if (ident->EqualsIgnoreCase("rect")) {    if (!ExpectSymbol(aErrorCode, '(', PR_TRUE)) {      return PR_FALSE;    }    for (int i = 0; i < 4; i++) {      if (!ParseVariant(aErrorCode, aDeclaration, kClipNames[i], VARIANT_AL, nsnull)) {        return PR_FALSE;      }      if (3 != i) {        // skip optional commas between elements        ExpectSymbol(aErrorCode, ',', PR_TRUE);      }    }    if (!ExpectSymbol(aErrorCode, ')', PR_TRUE)) {      return PR_FALSE;    }    return PR_TRUE;  } else {    UngetToken();  }  return PR_FALSE;}