/**
  * Parse a block from an array
  * @param array $data
  *
  * @return Block|null
  */
 private function parseBlock(array $data)
 {
     $block = new Block();
     $block->setItemSet($this->itemSet);
     //Type
     if (isset($data['type'])) {
         $block->setType($data['type']);
     } else {
         $block->setType("Block");
     }
     //RecMath
     if (isset($data['recMath'])) {
         $block->setRecMath(new \SplBool(@(bool) $data['recMath']));
     }
     //MinSummonerLevel
     if (isset($data['minSummonerLevel'])) {
         $block->setMinSummonerLevel(new \SplInt(@(int) $data['minSummonerLevel']));
     }
     //MaxSummonerLevel
     if (isset($data['maxSummonerLevel'])) {
         $block->setMaxSummonerLevel(new \SplInt(@(int) $data['maxSummonerLevel']));
     }
     //showIfSummonerSpell
     if (isset($data['showIfSummonerSpell'])) {
         $spell = $this->summonerSpellList->getSpell($data['showIfSummonerSpell']);
         if ($spell != null) {
             $block->setShowIfSummonerSpell($spell);
         }
     }
     //hideIfSummonerSpell
     if (isset($data['hideIfSummonerSpell'])) {
         $spell = $this->summonerSpellList->getSpell($data['hideIfSummonerSpell']);
         if ($spell != null) {
             $block->setHideIfSummonerSpell($spell);
         }
     }
     //Comments
     if (isset($data['comment'])) {
         $block->setComment($data['comment']);
     }
     if (isset($data['items'])) {
         ksort($data['items']);
         $block->setItems($this->parseItems($data['items'], $block));
     }
     if (empty($block->getItems())) {
         return null;
     }
     return $block;
 }