public static function convertCamelCaseToSnakeCase(string $value): string
    {
        if (isset(self::$snakeCache[$value])) {
            return self::$snakeCache[$value];
        }

        $withUpperArray = str_split($value);

        $snake_case = '';
        foreach ($withUpperArray as $letter) {
            if (preg_match("/[A-Z]/", $letter)) {
                $snake_case .= '_'.mb_strtolower($letter);
            } else {
                $snake_case .= $letter;
            }
        }

        return self::$snakeCache[$value] = $snake_case;
    }