/**
  * {@inheritdoc}
  */
 public static function fromArray(array $values)
 {
     $message = new self();
     $values = array_merge(['incense_lifetime_seconds' => null, 'pokemon_type' => [], 'pokemon_incense_type_probability' => null, 'standing_time_between_encounters_seconds' => null, 'moving_time_between_encounter_seconds' => null, 'distance_required_for_shorter_interval_meters' => null, 'pokemon_attracted_length_sec' => null], $values);
     $message->setIncenseLifetimeSeconds($values['incense_lifetime_seconds']);
     $message->setPokemonIncenseTypeProbability($values['pokemon_incense_type_probability']);
     $message->setStandingTimeBetweenEncountersSeconds($values['standing_time_between_encounters_seconds']);
     $message->setMovingTimeBetweenEncounterSeconds($values['moving_time_between_encounter_seconds']);
     $message->setDistanceRequiredForShorterIntervalMeters($values['distance_required_for_shorter_interval_meters']);
     $message->setPokemonAttractedLengthSec($values['pokemon_attracted_length_sec']);
     foreach ($values['pokemon_type'] as $item) {
         $message->addPokemonType($item);
     }
     return $message;
 }