tag = getter_AddRefs(NS_NewAtom("HTMLStyleSheet"));
tag = getter_AddRefs(NS_NewAtom("HTMLColorRule"));
void HTMLStyleSheetImpl::SizeOf(nsISizeOfHandler *aSizeOfHandler, PRUint32 &aSize){  NS_ASSERTION(aSizeOfHandler != nsnull, "SizeOf handler cannot be null");  // first get the unique items collection  UNIQUE_STYLE_ITEMS(uniqueItems);  if(! uniqueItems->AddItem((void*)this)){    // this style sheet is lared accounted for    return;  }  PRUint32 localSize=0;  // create a tag for this instance  nsCOMPtr<nsIAtom> tag;  tag = getter_AddRefs(NS_NewAtom("HTMLStyleSheet"));  // get the size of an empty instance and add to the sizeof handler  aSize = sizeof(HTMLStyleSheetImpl);  aSizeOfHandler->AddSize(tag,aSize);  // now gather up the sizes of the data members  // - mLinkRule : sizeof object  // - mVisitedRule  : sizeof object  // - mActiveRule  : sizeof object  // - mDocumentColorRule  : sizeof object  // - mTableBackgroundRule  : sizeof object  // - mTableTHRule : sizeof object  // - mMappedAttrTable  if(mLinkRule && uniqueItems->AddItem((void*)mLinkRule)){    localSize = sizeof(*mLinkRule);    tag = getter_AddRefs(NS_NewAtom("LinkRule"));    aSizeOfHandler->AddSize(tag,localSize);  }  if(mVisitedRule && uniqueItems->AddItem((void*)mVisitedRule)){    localSize = sizeof(*mVisitedRule);    tag = getter_AddRefs(NS_NewAtom("VisitedRule"));    aSizeOfHandler->AddSize(tag,localSize);  }  if(mActiveRule && uniqueItems->AddItem((void*)mActiveRule)){    localSize = sizeof(*mActiveRule);    tag = getter_AddRefs(NS_NewAtom("ActiveRule"));    aSizeOfHandler->AddSize(tag,localSize);  }  if(mDocumentColorRule && uniqueItems->AddItem((void*)mDocumentColorRule)){    localSize = sizeof(*mDocumentColorRule);    tag = getter_AddRefs(NS_NewAtom("DocumentColorRule"));    aSizeOfHandler->AddSize(tag,localSize);  }  if(mTableBackgroundRule && uniqueItems->AddItem((void*)mTableBackgroundRule)){    localSize = sizeof(*mTableBackgroundRule);    tag = getter_AddRefs(NS_NewAtom("TableBackgroundRule"));    aSizeOfHandler->AddSize(tag,localSize);  }  if(mTableTHRule && uniqueItems->AddItem((void*)mTableTHRule)){    localSize = sizeof(*mTableTHRule);    tag = getter_AddRefs(NS_NewAtom("TableTHRule"));    aSizeOfHandler->AddSize(tag,localSize);  }    // for the AttrTable it is kindof sleezy:   //  We want the hash table overhead as well as the entries it contains  //  //  we get the overall size of the hashtable, and if there are entries,  //  we calculate a rough overhead estimate as:  //   number of entries X sizeof each hash-entry   //   + the size of a hash table (see plhash.h and nsHashTable.h)  //  then we add up the size of each unique attribute  localSize = sizeof(mMappedAttrTable);  if(mMappedAttrTable.Count() >0){    localSize += sizeof(PLHashTable);    localSize += mMappedAttrTable.Count() * sizeof(PLHashEntry);  }  tag = getter_AddRefs(NS_NewAtom("MappedAttrTable"));  aSizeOfHandler->AddSize(tag,localSize);  // now get each unique attribute  MappedAttributeSizeEnumData sizeEnumData(aSizeOfHandler, uniqueItems);  mMappedAttrTable.Enumerate(MappedSizeAttributes, &sizeEnumData);  // that's it}