/**
  * {@inheritdoc}
  */
 public static function fromArray(array $values)
 {
     $message = new self();
     $values = array_merge(['path' => [], 'span' => [], 'leading_comments' => null, 'trailing_comments' => null, 'leading_detached_comments' => []], $values);
     $message->setLeadingComments($values['leading_comments']);
     $message->setTrailingComments($values['trailing_comments']);
     foreach ($values['path'] as $item) {
         $message->addPath($item);
     }
     foreach ($values['span'] as $item) {
         $message->addSpan($item);
     }
     foreach ($values['leading_detached_comments'] as $item) {
         $message->addLeadingDetachedComments($item);
     }
     return $message;
 }