private function resolveTemplateType($templateType)
    {
        if (is_string($templateType)
            && !$templateType = $this->templateTypeLoader->retrieve($templateTypeName = $templateType)) {
            throw new \InvalidArgumentException(sprintf('Given template type name is invalid, "%s" given.',
                $templateTypeName
            ));
        }
        if ($templateType instanceof TemplateTypeInterface) {
            return $templateType;
        }

        throw new \InvalidArgumentException(sprintf(
            '%s only supports template type names or template type objects, "%s" given.',
            __CLASS__,
            is_object($templateType) ? get_class($templateType) : $templateType
        ));
    }