/**
  * {@inheritdoc}
  */
 public static function fromArray(array $values)
 {
     $message = new self();
     $values = array_merge(['upgrades_per_level' => null, 'allowed_levels_above_player' => null, 'candy_cost' => [], 'stardust_cost' => []], $values);
     $message->setUpgradesPerLevel($values['upgrades_per_level']);
     $message->setAllowedLevelsAbovePlayer($values['allowed_levels_above_player']);
     foreach ($values['candy_cost'] as $item) {
         $message->addCandyCost($item);
     }
     foreach ($values['stardust_cost'] as $item) {
         $message->addStardustCost($item);
     }
     return $message;
 }