shared interface ExecutingMove {
HitData@ GetHitData(Pokemon@ target, uint8 hit) const;
bool IsPokemonTarget(Pokemon@ pkmn) const;
Pokemon@ User { get const; }
LearnedMove@ Move { get const; }
MoveData@ UseMove { get const; }
}