if ((isSearchCategoryURI(source)) && (categoryDataSource)) { const char	*uri = nsnull; source->GetValueConst(&uri); if (!uri)	return(NS_ERROR_UNEXPECTED);  nsCOMPtr<nsIRDFResource>	category; if (NS_FAILED(rv = gRDFService->GetResource(uri, getter_AddRefs(category)))) return(rv);  rv = categoryDataSource->ArcLabelsOut(category, labels); return(rv); }  if (isSearchCategoryEngineURI(source)) { nsCOMPtr<nsIRDFResource>	trueEngine; rv = resolveSearchCategoryEngineURI(source, getter_AddRefs(trueEngine)); if (NS_FAILED(rv) || (rv == NS_RDF_NO_VALUE))	return(rv); if (!trueEngine)	return(NS_RDF_NO_VALUE);  source = trueEngine; }  if (isEngineURI(source)) {  nsCOMPtr<nsIRDFLiteral>	dataLit; FindData(source, getter_AddRefs(dataLit)); }
InternetSearchDataSource::ArcLabelsOut(nsIRDFResource *source,                             nsISimpleEnumerator **labels /* out */){	NS_PRECONDITION(source != nsnull, "null ptr");	if (! source)		return NS_ERROR_NULL_POINTER;	NS_PRECONDITION(labels != nsnull, "null ptr");	if (! labels)		return NS_ERROR_NULL_POINTER;	nsresult rv;	if ((source == kNC_SearchRoot) || (source == kNC_LastSearchRoot) || isSearchURI(source))	{            nsCOMPtr<nsISupportsArray> array;            rv = NS_NewISupportsArray(getter_AddRefs(array));            if (NS_FAILED(rv)) return rv;            array->AppendElement(kNC_Child);            nsISimpleEnumerator* result = new nsArrayEnumerator(array);            if (! result)                return NS_ERROR_OUT_OF_MEMORY;            NS_ADDREF(result);            *labels = result;            return(NS_OK);	}		if (mInner)	{		rv = mInner->ArcLabelsOut(source, labels);		return(rv);	}	return NS_NewEmptyEnumerator(labels);}