nsIRDFDataSource* ds = NS_STATIC_CAST(nsIRDFDataSource*, mDataSources[i]);
CompositeDataSourceImpl::GetTarget(nsIRDFResource* aSource,                                   nsIRDFResource* aProperty,                                   PRBool aTruthValue,                                   nsIRDFNode** aResult){    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(aResult != nsnull, "null ptr");    if (! aResult)        return NS_ERROR_NULL_POINTER;    if ((mAllowNegativeAssertions == PR_FALSE) && (aTruthValue == PR_FALSE))        return(NS_RDF_NO_VALUE);    PRInt32 count = mDataSources.Count();    for (PRInt32 i = 0; i < count; ++i) {        nsIRDFDataSource* ds = NS_STATIC_CAST(nsIRDFDataSource*, mDataSources[i]);        nsresult rv;        rv = ds->GetTarget(aSource, aProperty, aTruthValue, aResult);        if (NS_FAILED(rv))            return rv;        if (rv == NS_OK) {            // okay, found it. make sure we don't have the opposite            // asserted in an earlier data source            if (mAllowNegativeAssertions == PR_TRUE) {                if (HasAssertionN(count-1, aSource, aProperty, *aResult, !aTruthValue)) {                    // whoops, it's been negated.                    NS_RELEASE(*aResult);                    return NS_RDF_NO_VALUE;                }            }            return NS_OK;        }    }    // Otherwise, we couldn't find it at all.    return NS_RDF_NO_VALUE;}