async def METHOD_NAME(self, frame):
    if self.network_trace:
        _LOGGER.debug("<- %r", TransferFrame(payload=b"***", *frame[:-1]), extra=self.network_trace_params)
    self.current_link_credit -= 1
    self.delivery_count += 1
    self.received_delivery_id = frame[1] # delivery_id
    if self.received_delivery_id is not None:
        self._first_frame = frame
    if not self.received_delivery_id and not self._received_payload:
        pass  # TODO: delivery error
    if self._received_payload or frame[5]:  # more
        self._received_payload.extend(frame[11])
    if not frame[5]:
        if self._received_payload:
            message = decode_payload(memoryview(self._received_payload))
            self._received_payload = bytearray()
        else:
            message = decode_payload(frame[11])
        delivery_state = await self._process_incoming_message(self._first_frame, message)
        if not frame[4] and delivery_state:  # settled
            await self._outgoing_disposition(
                first=self._first_frame[1],
                last=self._first_frame[1],
                settled=True,
                state=delivery_state,
                batchable=None
            )