ras = ras->mInvNext;
ras = ras->u.as.mInvNext;
InMemoryDataSource::SweepForwardArcsEntries(PLDHashTable* aTable,                                            PLDHashEntryHdr* aHdr,                                            PRUint32 aNumber, void* aArg){    Entry* entry = NS_REINTERPRET_CAST(Entry*, aHdr);    SweepInfo* info = NS_STATIC_CAST(SweepInfo*, aArg);    Assertion* as = entry->mAssertions;    Assertion* prev = nsnull;    while (as) {        if (as->IsMarked()) {            prev = as;            as->Unmark();            as = as->mNext;        }        else {            // remove from the list of assertions in the datasource            Assertion* next = as->mNext;            if (prev) {                prev->mNext = next;            }            else {                // it's the first one. update the hashtable entry.                entry->mAssertions = next;            }            // remove from the reverse arcs            PLDHashEntryHdr* hdr =                PL_DHashTableOperate(info->mReverseArcs, as->mTarget, PL_DHASH_LOOKUP);            NS_ASSERTION(PL_DHASH_ENTRY_IS_BUSY(hdr), "no assertion in reverse arcs");            Entry* rentry = NS_REINTERPRET_CAST(Entry*, hdr);            Assertion* ras = rentry->mAssertions;            Assertion* rprev = nsnull;            while (ras) {                if (ras == as) {                    if (rprev) {                        rprev->mInvNext = ras->mInvNext;                    }                    else {                        // it's the first one. update the hashtable entry.                        rentry->mAssertions = ras->mInvNext;                    }                    as->mInvNext = nsnull; // for my sanity.                    break;                }                rprev = ras;                ras = ras->mInvNext;            }            // Wow, it was the _only_ one. Unhash it.            if (! rentry->mAssertions)                PL_DHashTableOperate(info->mReverseArcs, as->mTarget, PL_DHASH_REMOVE);                        // add to the list of assertions to unassert            as->mNext = info->mUnassertList;            info->mUnassertList = as;            // Advance to the next assertion            as = next;        }    }    PLDHashOperator result = PL_DHASH_NEXT;    // if no more assertions exist for this resource, then unhash it.    if (! entry->mAssertions)        result = PL_DHASH_REMOVE;    return result;}