When generating API stubs with the scaffold utility using, e.g., `python -m localstack.aws.scaffold sns`,
the scaffold creates method names from operation names, which are ugly when acronyms (subsequent uppercase characters that belong together).

Example:
`CreateSMSSandboxPhoneNumber` -> `create_s_m_s_sandbox_phone_number`

it would be nicer to have `create_sms_sandbox_phone_number`

This is a limitation of this method: https://github.com/localstack/localstack/blob/1888e66b85d7e6a8ee457bc7a732984fcf7aa830/localstack/utils/common.py#L978-L979
self.file_path = file_path
        self.callback = callback
        self.thread: Optional[FuncThread] = None
        self.started = threading.Event()
        self.use_tail_command = not is_windows() and is_command_available("tail")
    def start(self):
        self.thread = self._do_start_thread()
        self.started.wait()
        if self.thread.result_future.done():
            
            self.thread.result_future.result()
    def join(self, timeout=None):
        if self.thread:
            self.thread.join(timeout=timeout)
    def close(self):
        if self.thread and self.thread.running:
            self.thread.stop()
        self.started.clear()
        self.thread = None
    def _do_start_thread(self) -> FuncThread:
        if self.use_tail_command:
            thread = self._create_tail_command_thread()
            thread.start()
            thread.started.wait(5)
            self.started.set()
        else:
            thread = self._create_tailer_thread()
            thread.start()
        return thread
    def _create_tail_command_thread(self) -> ShellCommandThread: