/**
  * {@inheritdoc}
  */
 public static function fromArray(array $values)
 {
     if (!isset($values['name_part'])) {
         throw new \InvalidArgumentException('Field "name_part" (tag 1) is required but has no value.');
     }
     if (!isset($values['is_extension'])) {
         throw new \InvalidArgumentException('Field "is_extension" (tag 2) is required but has no value.');
     }
     $message = new self();
     $values = array_merge([], $values);
     $message->setNamePart($values['name_part']);
     $message->setIsExtension($values['is_extension']);
     return $message;
 }