element->NodeInfo()->GetQualifiedName(tagstr);
element->GetNodeInfo()->GetQualifiedName(tagstr);
NS_NewXULElement(nsIContent** aResult, nsINodeInfo *aNodeInfo){    NS_PRECONDITION(aNodeInfo, "need nodeinfo for non-proto Create");    *aResult = nsnull;    // Create an nsXULElement with the specified namespace and tag.    nsXULElement* element = new nsXULElement();    NS_ENSURE_TRUE(element, NS_ERROR_OUT_OF_MEMORY);    // anchor the element so an early return will clean up properly.    nsCOMPtr<nsIContent> anchor = element;    nsresult rv = element->Init();    NS_ENSURE_SUCCESS(rv, rv);    rv = element->EnsureSlots();    NS_ENSURE_SUCCESS(rv, rv);    element->mSlots->mNodeInfo = aNodeInfo;    anchor.swap(*aResult);#ifdef DEBUG_ATTRIBUTE_STATS    {        gFaults.Create++; gFaults.Total++;        nsAutoString tagstr;        element->NodeInfo()->GetQualifiedName(tagstr);        char *tagcstr = ToNewCString(tagstr);        fprintf(stderr, "XUL: Heavyweight create of <%s>: %d/%d\n",                tagcstr, gFaults.Create, gFaults.Total);        nsMemory::Free(tagcstr);        void *back[5];        backtrace(back, sizeof(back) / sizeof(back[0]));        backtrace_symbols_fd(back, sizeof(back) / sizeof(back[0]), 2);    }#endif    return NS_OK;}