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(); }