/**
  * The caption title. REQUIRED.
  *
  * @param H1|string $title the caption text that will be shown
  *
  * @return $this
  */
 public function withTitle($title)
 {
     Type::enforce($title, [Type::STRING, H1::getClassName()]);
     if (Type::is($title, Type::STRING)) {
         $title = H1::create()->appendText($title);
     }
     $this->title = $title;
     return $this;
 }
 /**
  * Adds new child elements to the front of this InstantArticle
  *
  * @param Element to be added to this Article.
  *
  * @return $this
  */
 public function unshiftChild($child)
 {
     Type::enforce($child, [Ad::getClassName(), Analytics::getClassName(), AnimatedGIF::getClassName(), Audio::getClassName(), Blockquote::getClassName(), Image::getClassName(), H1::getClassName(), H2::getClassName(), Interactive::getClassName(), ListElement::getClassName(), Map::getClassName(), Paragraph::getClassName(), Pullquote::getClassName(), RelatedArticles::getClassName(), Slideshow::getClassName(), SocialEmbed::getClassName(), Video::getClassName()]);
     array_unshift($this->children, $child);
     return $this;
 }