def METHOD_NAME(
		systemPowerStatus: Optional[SystemPowerStatus],
		context: _ReportContext,
		oldPowerState: PowerState,
) -> List[str]:
	if not systemPowerStatus or systemPowerStatus.BatteryFlag == BatteryFlag.UNKNOWN:
		# Translators: This is presented when there is an error retrieving the battery status.
		return [_("Unknown power status")]
	if systemPowerStatus.BatteryFlag & BatteryFlag.NO_SYSTEM_BATTERY:
		# Translators: This is presented when there is no battery such as desktop computers
		# and laptops with battery pack removed.
		return [_("No system battery")]
	if (
		context == _ReportContext.AC_STATUS_CHANGE
		and systemPowerStatus.ACLineStatus == oldPowerState
	):
		# Sometimes, the power change event double fires.
		# The power change event also fires when the battery level decreases by 3%.
		return []
	text: List[str] = []
	if context == _ReportContext.AC_STATUS_CHANGE:
		# When the AC status changes, users want to be alerted to the new AC status first.
		text.append(_getACStatusText(systemPowerStatus))
		text.extend(_getBatteryInformation(systemPowerStatus))
	elif context == _ReportContext.FETCH_STATUS:
		# When fetching the current battery status,
		# users want to know the current battery status first,
		# rather than the AC status which should be unchanged.
		text.extend(_getBatteryInformation(systemPowerStatus))
		text.append(_getACStatusText(systemPowerStatus))
	else:
		raise NotImplementedError(f"Unexpected _ReportContext: {context}")
	return text