nsIRDFDataSource* ds = NS_STATIC_CAST(nsIRDFDataSource*, mDataSources[i]); rv = ds->Assert(aSource, aProperty, aTarget, aTruthValue);
rv = mDataSources[i]->Assert(aSource, aProperty, aTarget, aTruthValue);
CompositeDataSourceImpl::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;    if ((mAllowNegativeAssertions == PR_FALSE) && (aTruthValue == PR_FALSE))        return(NS_RDF_ASSERTION_REJECTED);    nsresult rv;    // XXX Need to add back the stuff for unblocking ...    // We iterate backwards from the last data source which was added    // ("the most remote") to the first ("the most local"), trying to    // apply the assertion in each.    for (PRInt32 i = mDataSources.Count() - 1; i >= 0; --i) {        nsIRDFDataSource* ds = NS_STATIC_CAST(nsIRDFDataSource*, mDataSources[i]);        rv = ds->Assert(aSource, aProperty, aTarget, aTruthValue);        if (NS_RDF_ASSERTION_ACCEPTED == rv)            return rv;        if (NS_FAILED(rv))            return rv;    }    // nobody wanted to accept it    return NS_RDF_ASSERTION_REJECTED;}