qualifier, aParams);
qualifier, 0, aParams);
static nsresult GetParamDescOfPart(nsIInterfaceInfoSuperManager* iism,                                   nsIGenericInterfaceInfoSet* aSet,                                                                      nsIWSDLPart* aPart,                                   const IIDX& iidx,                                   XPTParamDescriptor* defaultResult,                                   const nsAString& qualifier,                                   ParamAccumulator* aParams){  nsresult rv;  // If the binding is 'literal' then we consider this as DOM element.  nsCOMPtr<nsIWSDLBinding> binding;  rv = aPart->GetBinding(getter_AddRefs(binding));  if (NS_FAILED(rv)) {    return rv;  }  nsCOMPtr<nsISOAPPartBinding> soapPartBinding(do_QueryInterface(binding));  if (soapPartBinding) {    PRUint16 use;    rv = soapPartBinding->GetUse(&use);    if (NS_FAILED(rv)) {      return rv;    }    if (use == nsISOAPPartBinding::USE_LITERAL) {      XPTParamDescriptor* paramDesc = aParams->GetNextParam();      if (!paramDesc) {        return NS_ERROR_OUT_OF_MEMORY;      }      paramDesc->type.prefix.flags = TD_INTERFACE_TYPE | XPT_TDP_POINTER;      paramDesc->type.type.iface = iidx.Get(IIDX::IDX_nsIDOMElement);      return NS_OK;    }  }  nsCOMPtr<nsISchemaComponent> schemaComponent;  rv = aPart->GetSchemaComponent(getter_AddRefs(schemaComponent));  if (NS_FAILED(rv)) {    return rv;  }  nsCOMPtr<nsISchemaType> type;  nsCOMPtr<nsISchemaElement> element(do_QueryInterface(schemaComponent));  if (element) {    rv = element->GetType(getter_AddRefs(type));    if (NS_FAILED(rv)) {      return rv;    }  }  else {    type = do_QueryInterface(schemaComponent, &rv);    if (NS_FAILED(rv)) {      return rv;    }  }  return GetParamDescOfType(iism, aSet, type, iidx, defaultResult,                            qualifier, aParams);}