type MoveTurnChoice {
TurnChoiceKind Kind { get const; };
Pokemon@ User { get const; };
LearnedMove@ Move { get const; };
int8 Priority { get const; };
bool HasFailed { get const; };
void Fail();
BaseTurnChoice@ opImplCast();
}