if (!aTruthValue) return NS_RDF_NO_VALUE;
nsISupportsArray *nodes; rv = NS_NewISupportsArray(&nodes); if (NS_FAILED(rv)) return rv;  nsISimpleEnumerator* enumerator = new nsArrayEnumerator(nodes); if (!enumerator) return NS_ERROR_OUT_OF_MEMORY;  NS_ADDREF(enumerator); *_retval = enumerator;
nsMsgAccountManagerDataSource::GetTargets(nsIRDFResource *source,                                   nsIRDFResource *property,                                   PRBool aTruthValue,                                   nsISimpleEnumerator **_retval){  printf("accountmanager::GetTargets()\n");  nsresult rv = NS_RDF_NO_VALUE;  if (!aTruthValue) return NS_RDF_NO_VALUE;  // if the property is "account" or "child" then return the  // list of accounts  // if the property is "server" return a union of all servers  // in the account (mainly for the folder pane)  char *source_value=nsnull;  rv = source->GetValue(&source_value);#ifdef DEBUG_alecf  char *property_value=nsnull;  rv = property->GetValue(&property_value);  printf("nsMsgAccountManagerDataSource::GetTargets(%s, %s, %s, ..)\n",         source_value, property_value, aTruthValue?"PR_TRUE":"PR_FALSE");#endif    if (NS_FAILED(rv) ||      PL_strcmp(source_value, "msgaccounts:/")!=0)    return NS_RDF_NO_VALUE;  printf("GetTargets(): This is an account manager..\n");  nsISupportsArray *servers;  mAccountManager->GetAllServers(&servers);  nsISupportsArray *nodes;  NS_NewISupportsArray(&nodes);  // fill up the nodes array with the RDF Resources for the servers  serverCreationParams params = { nodes, getRDFService() };  servers->EnumerateForwards(createServerResources, (void*)&params);    nsISimpleEnumerator* enumerator =    new nsArrayEnumerator(nodes);  if (!enumerator) return NS_ERROR_OUT_OF_MEMORY;      NS_ADDREF(enumerator);  *_retval = enumerator;  return NS_OK;  }