/**
  * {@inheritdoc}
  */
 public static function fromArray(array $values)
 {
     $message = new self();
     $values = array_merge(['gym_state' => null, 'attackers' => [], 'player_experience_awarded' => [], 'next_defender_pokemon_id' => null, 'gym_points_delta' => null], $values);
     $message->setGymState($values['gym_state']);
     $message->setNextDefenderPokemonId($values['next_defender_pokemon_id']);
     $message->setGymPointsDelta($values['gym_points_delta']);
     foreach ($values['attackers'] as $item) {
         $message->addAttackers($item);
     }
     foreach ($values['player_experience_awarded'] as $item) {
         $message->addPlayerExperienceAwarded($item);
     }
     return $message;
 }