/**
  * {@inheritdoc}
  */
 public static function fromArray(array $values)
 {
     $message = new self();
     $values = array_merge(['pokemon_id' => null, 'model_scale' => null, 'type' => null, 'type_2' => null, 'camera' => null, 'encounter' => null, 'stats' => null, 'quick_moves' => [], 'cinematic_moves' => [], 'animation_time' => [], 'evolution_ids' => [], 'evolution_pips' => null, 'rarity' => null, 'pokedex_height_m' => null, 'pokedex_weight_kg' => null, 'parent_pokemon_id' => null, 'height_std_dev' => null, 'weight_std_dev' => null, 'km_distance_to_hatch' => null, 'family_id' => null, 'candy_to_evolve' => null, 'km_buddy_distance' => null, 'buddy_size' => null, 'model_height' => null], $values);
     $message->setPokemonId($values['pokemon_id']);
     $message->setModelScale($values['model_scale']);
     $message->setType($values['type']);
     $message->setType2($values['type_2']);
     $message->setCamera($values['camera']);
     $message->setEncounter($values['encounter']);
     $message->setStats($values['stats']);
     $message->setEvolutionPips($values['evolution_pips']);
     $message->setRarity($values['rarity']);
     $message->setPokedexHeightM($values['pokedex_height_m']);
     $message->setPokedexWeightKg($values['pokedex_weight_kg']);
     $message->setParentPokemonId($values['parent_pokemon_id']);
     $message->setHeightStdDev($values['height_std_dev']);
     $message->setWeightStdDev($values['weight_std_dev']);
     $message->setKmDistanceToHatch($values['km_distance_to_hatch']);
     $message->setFamilyId($values['family_id']);
     $message->setCandyToEvolve($values['candy_to_evolve']);
     $message->setKmBuddyDistance($values['km_buddy_distance']);
     $message->setBuddySize($values['buddy_size']);
     $message->setModelHeight($values['model_height']);
     foreach ($values['quick_moves'] as $item) {
         $message->addQuickMoves($item);
     }
     foreach ($values['cinematic_moves'] as $item) {
         $message->addCinematicMoves($item);
     }
     foreach ($values['animation_time'] as $item) {
         $message->addAnimationTime($item);
     }
     foreach ($values['evolution_ids'] as $item) {
         $message->addEvolutionIds($item);
     }
     return $message;
 }