Is there any reason we copy `abilities` over instead of just updating the pointer? Do we write to `poke.abilities` ever?