NS_RELEASE(kScrollbarAtom);   FlushMemory(REASON_HEAP_MINIMIZE, 0);     gClassLRUListLength = gClassLRUListQuota = 0;    delete gClassTable; gClassTable = nsnull;  nsMemory::UnregisterObserver(this);  if (gXULUtils) { nsServiceManager::ReleaseService("component: gXULUtils = nsnull; }  if (gXULCache) { nsServiceManager::ReleaseService("component: gXULCache = nsnull; }
NS_RELEASE(kHasChildrenAtom);
nsXBLService::~nsXBLService(void){  gRefCnt--;  if (gRefCnt == 0) {    NS_IF_RELEASE(gNameSpaceManager);        // Release our atoms    NS_RELEASE(kExtendsAtom);    NS_RELEASE(kScrollbarAtom);    // Walk the LRU list removing and deleting the nsXBLJSClasses.    FlushMemory(REASON_HEAP_MINIMIZE, 0);    // Any straggling nsXBLJSClass instances held by unfinalized JS objects    // created for bindings will be deleted when those objects are finalized    // (and not put on gClassLRUList, because length >= quota).    gClassLRUListLength = gClassLRUListQuota = 0;    // At this point, the only hash table entries should be for referenced    // XBL class structs held by unfinalized JS binding objects.    delete gClassTable;    gClassTable = nsnull;    nsMemory::UnregisterObserver(this);    if (gXULUtils) {      nsServiceManager::ReleaseService("component://netscape/rdf/xul-content-utils", gXULUtils);      gXULUtils = nsnull;    }    if (gXULCache) {      nsServiceManager::ReleaseService("component://netscape/rdf/xul-prototype-cache", gXULCache);      gXULCache = nsnull;    }  }}