<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def invoke(self, args, kwargs):
 """ Invoke a specified web service method. Uses an injected SOAP request/response instead of a regularly constructed/received one. Depending on how the ``nosend`` & ``retxml`` options are set, may do one of the following: * Return a constructed web service operation request without sending it to the web service. * Invoke the web service operation and return its SOAP reply XML. * Invoke the web service operation, process its results and return the Python object representing the returned value. @param args: Positional arguments for the method invoked. @type args: list|tuple @param kwargs: Keyword arguments for the method invoked. @type kwargs: dict @return: SOAP request, SOAP reply or a web service return value. @rtype: L{RequestContext}|I{builtin}|I{subclass of} L{Object}|I{bytes}| I{None} """

        simulation = kwargs.pop(self.__injkey)
        msg = simulation.get("msg")
        if msg is not None:
            assert msg.__class__ is suds.byte_str_class
            return self.send(_parse(msg))
        msg = self.method.binding.input.get_message(self.method, args, kwargs)
        log.debug("inject (simulated) send message:\n%s", msg)
        reply = simulation.get("reply")
        if reply is not None:
            assert reply.__class__ is suds.byte_str_class
            status = simulation.get("status")
            description = simulation.get("description")
            if description is None:
                description = "injected reply"
            return self.process_reply(reply, status, description)
        raise Exception("reply or msg injection parameter expected")