<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def research(self, upgrade, *args, **kwargs):
 """ Requires UpgradeId to be passed instead of AbilityId """

        return self(self._game_data.upgrades[upgrade.value].research_ability.id, *args, **kwargs)