public static function fromArray($data)
 {
     if (!array_key_exists('totalScore', $data) || !array_key_exists('scoreParts', $data)) {
         throw new \InvalidArgumentException('array does not contain \'totalScore\' or \'scoreParts\'');
     }
     if (!is_array($data['scoreParts'])) {
         throw new \InvalidArgumentException('\'scoreParts\' must be an array');
     }
     $score = new self();
     $score->setTotalScore($data['totalScore']);
     foreach ($data['scoreParts'] as $keyScore => $scorePart) {
         $score->addScorePart($keyScore, ScorePart::fromArray($scorePart));
     }
     return $score;
 }