public static function pascal2snake(string $pascal): string
    {
        preg_match_all('/((?:^|[A-Z])[a-z]+)/', $pascal, $matches);

        if($matches !== null && count($matches) > 1 && count($matches[1]) > 1)
        {
            $nameParts = $matches[1];
            $nameParts = array_map("lcfirst", $nameParts);
            return implode("_", $nameParts);
        }
        else
        {
            return lcfirst($pascal);
        }
    }