PRInt32 hint;
nsChangeHint hint;
DOMCSSDeclarationImpl::ParseDeclaration(const nsAString& aDecl,                                        PRBool aParseOnlyOneDecl,                                        PRBool aClearOldDecl){  nsCSSDeclaration* decl;  nsresult result = GetCSSDeclaration(&decl, PR_TRUE);  if (decl) {    nsCOMPtr<nsICSSLoader> cssLoader;    nsCOMPtr<nsICSSParser> cssParser;    nsCOMPtr<nsIURI> baseURI;    nsCOMPtr<nsICSSStyleSheet> cssSheet;    nsCOMPtr<nsIDocument> owningDoc;    result = GetCSSParsingEnvironment(mRule,                                      getter_AddRefs(cssSheet),                                      getter_AddRefs(owningDoc),                                      getter_AddRefs(baseURI),                                      getter_AddRefs(cssLoader),                                      getter_AddRefs(cssParser));    if (NS_SUCCEEDED(result)) {      nsCSSDeclaration* declClone = decl->Clone();      NS_ENSURE_TRUE(declClone, NS_ERROR_OUT_OF_MEMORY);      if (aClearOldDecl) {        // This should be done with decl->Clear() once such a method exists.        nsAutoString propName;        PRUint32 count, i;        count = decl->Count();        for (i = 0; i < count; i++) {          decl->GetNthProperty(0, propName);          nsCSSProperty prop = nsCSSProps::LookupProperty(propName);          nsCSSValue val;           decl->RemoveProperty(prop, val);        }      }      PRInt32 hint;      result = cssParser->ParseAndAppendDeclaration(aDecl, baseURI, decl,                                                    aParseOnlyOneDecl, &hint);      if (result == NS_CSS_PARSER_DROP_DECLARATION) {        SetCSSDeclaration(declClone);        result = NS_OK;      } else if (NS_SUCCEEDED(result)) {        if (cssSheet) {          cssSheet->SetModified(PR_TRUE);        }        if (owningDoc) {          owningDoc->StyleRuleChanged(cssSheet, mRule, hint);        }      }      if (cssLoader) {        cssLoader->RecycleParser(cssParser);      }    }  }  return result;}