public function resolve(MarkupContainer $container, ComponentTag &$tag)
 {
     if ($tag instanceof PiconTag && $tag->getName() == 'head') {
         return new HeaderContainer(self::HEADER_ID);
     } else {
         if ($tag instanceof PiconTag && $tag->isHeaderTag()) {
             if ($container instanceof WebPage) {
                 //@todo this block is UNTESTED
                 $header = new HeaderContainer('header' . $container->getPage()->getAutoIndex());
                 $inner = new TransparentMarkupContainer('picon_header');
                 $inner->setRenderBodyOnly(true);
                 $header->add($inner);
                 return $header;
             } elseif ($container instanceof HeaderContainer) {
                 $header = new TransparentMarkupContainer('picon_header');
                 $header->setRenderBodyOnly(true);
                 return $header;
             }
             throw new \RuntimeException('<picon:head> tag was in an invalid location. It must be outside of <picon:extend> and <picon:panel>');
         }
     }
     return null;
 }
 protected function onComponentTagBody(ComponentTag $tag)
 {
     $this->getResponse()->write('<head>');
     parent::onComponentTagBody($tag);
     $page = $this->getPage();
     $headerResponse = new HeaderResponse($this->getResponse());
     PiconApplication::get()->getComponentRenderHeadListener()->onHeadRendering($this, $headerResponse);
     $page->renderHead($headerResponse);
     $self = $this;
     $callback = function (Component &$component) use($headerResponse, $self) {
         $component->renderHeadContainer($self, $headerResponse);
         return Component::VISITOR_CONTINUE_TRAVERSAL;
     };
     $page->visitChildren(Component::getIdentifier(), $callback);
     $this->getResponse()->write('</head>');
 }