<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _register_transaction(self, send_msg, recv_msg, coroutine_recv, coroutine_abrt, get_key=None, inter_msg=None):
 """ Register a type of message to be sent. After this message has been sent, if the answer is received, callback_recv is called. If the remote server becomes dones, calls callback_abrt. :param send_msg: class of message to be sent :param recv_msg: message that the server should send in response :param get_key: receive a `send_msg` or `recv_msg` as input, and returns the "key" (global identifier) of the message :param coroutine_recv: callback called (on the event loop) when the transaction succeed, with, as input, `recv_msg` and eventually other args given to .send :param coroutine_abrt: callback called (on the event loop) when the transaction fails, with, as input, `recv_msg` and eventually other args given to .send :param inter_msg: a list of `(message_class, coroutine_recv)`, that can be received during the resolution of the transaction but will not finalize it. `get_key` is used on these `message_class` to get the key of the transaction. """

        if get_key is None:
            get_key = lambda x: None
        if inter_msg is None:
            inter_msg = []

        # format is (other_msg, get_key, recv_handler, abrt_handler,responsible_for)
        # where responsible_for is the list of classes whose transaction will be killed when this message is received.
        self._msgs_registered[send_msg.__msgtype__] = ([recv_msg.__msgtype__] + [x.__msgtype__ for x, _ in inter_msg], get_key, None, None, [])
        self._msgs_registered[recv_msg.__msgtype__] = (
        [], get_key, coroutine_recv, coroutine_abrt, [recv_msg.__msgtype__] + [x.__msgtype__ for x, _ in inter_msg])

        self._transactions[recv_msg.__msgtype__] = {}
        for msg_class, handler in inter_msg:
            self._msgs_registered[msg_class.__msgtype__] = ([], get_key, handler, None, [])
            self._transactions[msg_class.__msgtype__] = {}