For example, in extractRollOptions, we reference IdParser.getMatches against a moveId. But if that move has been replaced by another, the replaced move doesn't match against the move it replaced.
We may want to keep a map of original_move_id -> replaced_move_id to reference whenever we call IdParser, and create a wrapper function around IdParser so that we don't run into this again in the future.