NS_ENSURE_ARG_POINTER(aSet);
FindInterfaceByName(const char* aName, nsIInterfaceInfoSuperManager* iism,                    nsIInterfaceInfoManager **aSet, nsIInterfaceInfo **_retval){  if (NS_SUCCEEDED(iism->GetInfoForName(aName, _retval)) && *_retval) {    NS_ADDREF(*aSet = iism);    return NS_OK;  }  PRBool yes;  nsCOMPtr<nsISimpleEnumerator> list;  if (NS_SUCCEEDED(iism->HasAdditionalManagers(&yes)) && yes &&      NS_SUCCEEDED(iism->EnumerateAdditionalManagers(getter_AddRefs(list))) &&      list) {    PRBool more;    nsCOMPtr<nsIInterfaceInfoManager> current;    while (NS_SUCCEEDED(list->HasMoreElements(&more)) && more &&           NS_SUCCEEDED(list->GetNext(getter_AddRefs(current))) && current) {      if (NS_SUCCEEDED(current->GetInfoForName(aName, _retval)) &&          *_retval) {        NS_ADDREF(*aSet = current.get());        return NS_OK;      }    }  }  return NS_ERROR_NO_INTERFACE;}