final protected function assertValidTemplateStructureDependencies()
    {
        if (!$this instanceof TemplateableInterface) {
            throw new RuntimeException(sprintf(
                'Class [%s] must implement [%s]',
                get_class($this),
                TemplateableInterface::class
            ));
        }

        $prop = $this->property('template_options');
        if (!$prop instanceof TemplateOptionsProperty) {
            throw new RuntimeException(sprintf(
                'Property "%s" must use [%s]',
                $prop->ident(),
                TemplateOptionsProperty::class
            ));
        }
    }