public PokemonEditorViewModel(IPokemonRepository pokemonRepository,
            IPokemonTypeRepository typeRepository,
            IPokemonSerializer pokemonSerializer)
        {
            Check.IfIsNull(pokemonRepository).Throw<ArgumentNullException>(() => pokemonRepository);
            Check.IfIsNull(typeRepository).Throw<ArgumentNullException>(() => typeRepository);

            Pokemons = new ObservableCollection<IPokemon>(pokemonRepository.SelectAll());
            PokemonTypes = new ObservableCollection<IPokemonType>(typeRepository.SelectAll());

            AddNewPokemonCommand = new Command(AddNewPokemon);
            DeletePokemonCommand = new Command(DeletePokemon, CanDeletePokemon);
            SavePokemonCommand = new Command(SavePokemon);

            this.pokemonSerializer = pokemonSerializer;
        }