cout << "IFoo@" << STATIC_CAST(void*, this) << "::QueryInterface()" << endl;
printf("IFoo@%p::QueryInterface()\n", STATIC_CAST(void*, this));
IFoo::QueryInterface( const nsIID& aIID, void** aResult )	{    cout << "IFoo@" << STATIC_CAST(void*, this) << "::QueryInterface()" << endl;		nsISupports* rawPtr = 0;		nsresult status = NS_OK;		if ( aIID.Equals(GetIID()) )			rawPtr = this;		else			{				nsID iid_of_ISupports = NS_ISUPPORTS_IID;				if ( aIID.Equals(iid_of_ISupports) )					rawPtr = STATIC_CAST(nsISupports*, this);				else					status = NS_ERROR_NO_INTERFACE;			}		NS_IF_ADDREF(rawPtr);		*aResult = rawPtr;		return status;	}