PL_DHashTableOperate(&mLiterals, value, PL_DHASH_REMOVE);
RDFServiceImpl::UnregisterLiteral(nsIRDFLiteral* aLiteral){    NS_PRECONDITION(aLiteral != nsnull, "null ptr");    nsresult rv;#ifdef REUSE_LITERAL_VALUE_AS_KEY    const PRUnichar* value;    rv = aLiteral->GetValueConst(&value);#else    nsXPIDLString value;    rv = aLiteral->GetValue(getter_Copies(value));#endif    NS_ASSERTION(NS_SUCCEEDED(rv), "unable to get literal's value");    if (NS_FAILED(rv)) return rv;    PLHashEntry** hep = PL_HashTableRawLookup(mLiterals, (*mLiterals->keyHash)(value), value);    if (!hep || !*hep)        return NS_OK;#ifndef REUSE_LITERAL_VALUE_AS_KEY    nsMemory::Free((void*) (*hep)->key);#endif    // N.B. that we _don't_ release the literal: we only held a weak    // reference to it in the hashtable.    PR_LOG(gLog, PR_LOG_DEBUG,           ("rdfserv unregister-literal [%p] %s",            aLiteral, (const PRUnichar*) value));    PL_HashTableRawRemove(mLiterals, hep, *hep);    return NS_OK;}