Дискриминированный union
Дискриминированное объединение это union объектов, у которых есть общее поле с литеральным типом. По значению этого поля (его называют дискриминантом или тегом) компилятор понимает, какой именно вариант перед ним.
В задании такое объединение уже собрано:
