public function createDecorator($decorable, $templateTypeName = null)
    {
        // Main content rendering
        if ($decorable instanceof ContentInterface) {
            return new ImmutableDecorator(
                $decorable,
                $this->contentDecorator,
                $this->currentTheme ?: $this->themeResolver->resolve(),
                $templateTypeName
            );
        }

        // Component rendering
        if ($decorable instanceof ComponentInterface) {
            return $this->componentDecorator;
        }

        throw new \InvalidArgumentException(sprintf(
            'Given decorable "%s" is not supported by Synapse. Check your configuration.',
            is_object($decorable) ? get_class($decorable) : gettype($decorable)
        ));
    }