obs->OnAssert(aSource, aProperty, aTarget);
obs->OnAssert(this, aSource, aProperty, aTarget);
InMemoryDataSource::Assert(nsIRDFResource* aSource,                           nsIRDFResource* aProperty,                            nsIRDFNode* aTarget,                           PRBool aTruthValue) {    NS_PRECONDITION(aSource != nsnull, "null ptr");    if (! aSource)        return NS_ERROR_NULL_POINTER;    NS_PRECONDITION(aProperty != nsnull, "null ptr");    if (! aProperty)        return NS_ERROR_NULL_POINTER;    NS_PRECONDITION(aTarget != nsnull, "null ptr");    if (! aTarget)        return NS_ERROR_NULL_POINTER;    nsresult rv;    {        NS_AUTOLOCK(mLock);        rv = LockedAssert(aSource, aProperty, aTarget, aTruthValue);        if (NS_FAILED(rv)) return rv;    }    // notify observers    if (mObservers) {        PRUint32 count;        rv = mObservers->Count(&count);        if (NS_FAILED(rv)) return rv;        for (PRInt32 i = PRInt32(count) - 1; i >= 0; --i) {            nsIRDFObserver* obs = (nsIRDFObserver*) mObservers->ElementAt(i);            obs->OnAssert(aSource, aProperty, aTarget);            NS_RELEASE(obs);            // XXX ignore return value?        }    }    return NS_RDF_ASSERTION_ACCEPTED;}