NS_AUTOLOCK(mLock);
InMemoryArcsEnumeratorImpl::InMemoryArcsEnumeratorImpl(InMemoryDataSource* aDataSource,                                                       nsIRDFResource* aSource,                                                       nsIRDFNode* aTarget)    : mDataSource(aDataSource),      mSource(aSource),      mTarget(aTarget),      mCurrent(nsnull){    NS_ADDREF(mDataSource);    NS_IF_ADDREF(mSource);    NS_IF_ADDREF(mTarget);    if (mSource) {        // cast okay because it's a closed system        mAssertion = mDataSource->GetForwardArcs(mSource);        if (mAssertion && mAssertion->mHashEntry) {            // its our magical HASH_ENTRY forward hash for assertions            nsresult rv = NS_NewISupportsArray(getter_AddRefs(mHashArcs));            if (NS_SUCCEEDED(rv)) {                NS_AUTOLOCK(mLock);                PL_DHashTableEnumerate(mAssertion->u.hash.mPropertyHash,                    ArcEnumerator, mHashArcs.get());            }            mAssertion = nsnull;        }    }    else {        mAssertion = mDataSource->GetReverseArcs(mTarget);    }}