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
return int(first) - int(second)
        self.assertListEqual(
            ["1", "2"], common.to_unique_items_list(["1", "2", "1", "2"], comparator_str_int)
        )
    def test_retry(self):
        exceptions = []
        count = itertools.count()
        def fn():
            i = next(count)
            e = RuntimeError("exception %d" % i)
            exceptions.append(e)
            if i == 2:
                return "two"
            raise e
        ret = common.retry(fn, retries=3, sleep=0.001)
        self.assertEqual("two", ret)
        self.assertEqual(3, len(exceptions))
    def test_retry_raises_last_exception(self):
        exceptions = []
        count = itertools.count()
        def fn():
            i = next(count)
            e = RuntimeError("exception %d" % i)
            exceptions.append(e)
            raise e
        with self.assertRaises(RuntimeError) as ctx:
            common.retry(fn, retries=3, sleep=0.001)
        self.assertIs(exceptions[-1], ctx.exception, "did not throw last exception")
        self.assertEqual(4, len(exceptions))
    def test_run(self):