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