def METHOD_NAME(self, method, args, kwargs):
    wrapped = method.soap.input.body.wrapped
    if wrapped:
        pts = self.bodypart_types(method)
        root = self.document(pts[0])
    else:
        root = []
    def add_param(param_name, param_type, in_choice_context, value):
        """
        Construct request data for the given input parameter.
        Called by our argument parser for every input parameter, in order.
        A parameter's type is identified by its corresponding XSD schema
        element.
        """
        # Do not construct request data for undefined input parameters
        # defined inside a choice order indicator. An empty choice
        # parameter can still be included in the constructed request by
        # explicitly providing an empty string value for it.
        #TODO: This functionality might be better placed inside the
        # mkparam() function but to do that we would first need to better
        # understand how different Binding subclasses in suds work and how
        # they would be affected by this change.
        if in_choice_context and value is None:
            return
        # Construct request data for the current input parameter.
        pdef = (param_name, param_type)
        p = self.mkparam(method, pdef, value)
        if p is None:
            return
        if not wrapped:
            ns = param_type.namespace("ns0")
            p.setPrefix(ns[0], ns[1])
        root.append(p)
    parse_args(method.name, self.param_defs(method), args, kwargs,
        add_param, self.options().extraArgumentErrors)
    return root