public function collect(Content $content)
    {
        $metaTags = array();

        $allHandlers = $this->configResolver->hasParameter('global_handlers', 'netgen_open_graph') ?
            $this->configResolver->getParameter('global_handlers', 'netgen_open_graph') :
            array();

        $contentType = $this->contentTypeService->loadContentType($content->contentInfo->contentTypeId);
        $contentTypeHandlers = $this->configResolver->hasParameter('content_type_handlers', 'netgen_open_graph') ?
            $this->configResolver->getParameter('content_type_handlers', 'netgen_open_graph') :
            array();

        if (isset($contentTypeHandlers[$contentType->identifier])) {
            $allHandlers = array_merge(
                isset($allHandlers['all_content_types']) ? $allHandlers['all_content_types'] : array(),
                $contentTypeHandlers[$contentType->identifier]
            );
        } else {
            $allHandlers = isset($allHandlers['all_content_types']) ? $allHandlers['all_content_types'] : array();
        }

        foreach ($allHandlers as $handler) {
            $metaTagHandler = $this->metaTagHandlers->getHandler($handler['handler']);
            if ($metaTagHandler instanceof ContentAware) {
                $metaTagHandler->setContent($content);
            }

            $newMetaTags = $metaTagHandler->getMetaTags($handler['tag'], $handler['params']);
            foreach ($newMetaTags as $metaTag) {
                if (!$metaTag instanceof Item) {
                    throw new LogicException(
                        '\'' . $handler['handler'] . '\' handler returned wrong value.' .
                        ' Expected \'Netgen\Bundle\OpenGraphBundle\MetaTag\Item\', got \'' . get_class($metaTag) . '\'.');
                }

                $metaTagValue = $metaTag->getTagValue();
                if (!empty($metaTagValue)) {
                    $metaTags[] = $metaTag;
                }
            }
        }

        return $metaTags;
    }