private function getTemplate(string $key, string $rule): string
    {
        $keyrule = implode('.', [$key, $rule]);

        if (array_key_exists($keyrule, $this->templates)) {

            return $this->templates[$keyrule];

        }

        if (array_key_exists($rule, $this->templates)) {

            return $this->templates[$rule];

        }

        if (array_key_exists(self::DEFAULT_TEMPLATE_KEY, $this->templates)) {

            return $this->templates[self::DEFAULT_TEMPLATE_KEY];

        }

        return self::FALLBACK_TEMPLATE;
    }