def METHOD_NAME(
    self,
    data: AckPacket | NackPacket | HeartbeatReceivePacket | KillReceivePacket,
) -> None:
    """
    Parse the two bytes and raise kills according to a set of specifications
    listed below.
    """
    if isinstance(data, (AckPacket, NackPacket)):
        self._last_packet = data
    elif isinstance(data, HeartbeatReceivePacket):
        self._last_heartbeat = rospy.Time.now()
    elif isinstance(data, KillReceivePacket):
        if data.set is False:
            self.update_software_kill(False, "")
        elif data.status is KillStatus.MOBO_HEARTBEAT_LOST:
            self.update_software_kill(
                True,
                "Thrust/kill board lost heartbeat from motherboard.",
            )
        elif data.status is KillStatus.BATTERY_LOW:
            self.update_software_kill(True, "Battery too low.")
        elif data.status is KillStatus.KILL_SWITCH:
            self.update_software_kill(True, "Kill switch was pulled!")
        elif data.status is KillStatus.BOARD_HEARTBEAT_LOST:
            dt = rospy_to_datetime(self._last_heartbeat)
            self.update_software_kill(
                True,
                f"Motherboard is no longer hearing heartbeat from thrust/kill board. Last heard from board at {dt}.",
            )
        elif data.status is KillStatus.SOFTWARE_REQUESTED:
            self.update_software_kill(
                True,
                "Software requested kill.",
            )
    else:
        raise ValueError(f"Not expecting packet of type {data.__class__.__name__}!")