def __new__(cls, ability, static_data):
    specific_data = static_data[ability.ability_id]
    if specific_data.remaps_to_ability_id:
      general_data = static_data[specific_data.remaps_to_ability_id]
    else:
      general_data = specific_data
    return super(_Ability, cls).__new__(
        cls,
        ability_id=general_data.ability_id,
        name=(general_data.friendly_name or general_data.button_name or
              general_data.link_name),
        footprint_radius=general_data.footprint_radius,
        requires_point=ability.requires_point,
        hotkey=specific_data.hotkey)