printf("ProxyObjectManager: %d \n", manager);
printf("ProxyObjectManager: %p \n", manager);
void TestCase_TwoClassesOneInterface(void *arg){    ArgsStruct *argsStruct = (ArgsStruct*) arg;    nsIProxyObjectManager*  manager;        nsServiceManager::GetService( NS_XPCOMPROXY_PROGID,                                   kProxyObjectManagerIID,                                  (nsISupports **)&manager);    printf("ProxyObjectManager: %d \n", manager);        PR_ASSERT(manager);    nsITestProxy         *proxyObject;    nsITestProxy         *proxyObject2;    nsTestXPCFoo*        foo   = new nsTestXPCFoo();    nsTestXPCFoo2*       foo2  = new nsTestXPCFoo2();        PR_ASSERT(foo);    PR_ASSERT(foo2);            manager->GetProxyObject(argsStruct->queue, nsITestProxy::GetIID(), foo, PROXY_SYNC, (void**)&proxyObject);        manager->GetProxyObject(argsStruct->queue, nsITestProxy::GetIID(), foo2, PROXY_SYNC, (void**)&proxyObject2);            if (proxyObject && proxyObject2)    {    // release ownership of the real object.                 PRInt32 a;        nsresult rv;        PRInt32 threadNumber = argsStruct->threadNumber;                printf("Deleting real Object (%d)\n", threadNumber);        NS_RELEASE(foo);           printf("Deleting real Object 2 (%d)\n", threadNumber);        NS_RELEASE(foo2);        printf("Thread (%d) Prior to calling proxyObject->Test.\n", threadNumber);        rv = proxyObject->Test(threadNumber, 0, &a);           printf("Thread (%d) error: %d.\n", threadNumber, rv);        printf("Thread (%d) Prior to calling proxyObject->Test2.\n", threadNumber);        rv = proxyObject->Test2();           printf("Thread (%d) error: %d.\n", threadNumber, rv);        printf("Thread (%d) Prior to calling proxyObject2->Test.\n", threadNumber);        rv = proxyObject2->Test(threadNumber, 0, &a);           printf("Thread (%d) proxyObject2 error: %d.\n", threadNumber, rv);        printf("Thread (%d) Prior to calling proxyObject2->Test2.\n", threadNumber);        rv = proxyObject2->Test2();           printf("Thread (%d) proxyObject2 error: %d.\n", threadNumber, rv);        printf("Deleting Proxy Object (%d)\n", threadNumber );        NS_RELEASE(proxyObject);        printf("Deleting Proxy Object 2 (%d)\n", threadNumber );        NS_RELEASE(proxyObject2);    }        PR_Sleep( PR_MillisecondsToInterval(1000) );  // If your thread goes away, your stack goes away.  Only use ASYNC on calls that do not have out parameters}