public object Clone() { IPokemon pokemon = PokemonFactory.CreatePokemon(); foreach (PropertyInfo property in pokemon.GetType().GetProperties()) { property.SetValue(pokemon, property.GetValue(this, null), null); } pokemon.ResetStats(); return(pokemon); }