public static function fromArray($data)
 {
     if (!array_key_exists('value', $data) || !array_key_exists('reasons', $data)) {
         throw new \InvalidArgumentException('array does not contain \'value\' or \'reasons\'');
     }
     if (!is_array($data['reasons'])) {
         throw new \InvalidArgumentException('\'reasons\' must be an array');
     }
     $scorePart = new self();
     $scorePart->setValue($data['value']);
     $scorePart->setReasons($data['reasons']);
     return $scorePart;
 }