async def METHOD_NAME():
    class Test(object):
        def __init__(self):
            self.in_call = False
            self._my_lock = asyncio.Lock()
        @synchronizedmethod("_my_lock")
        async def sleep_for_1s(self):
            assert self._my_lock.locked(), \
                "Lock was not held during function execution!"
            assert self.in_call is False, "Multiple concurrent executions!"
            self.in_call = True
            await asyncio.sleep(1)
            self.in_call = False
    a = Test()
    b = Test()
    # Calls to different instances should not block eachother
    await asyncio.wait(
        [asyncio.create_task(a.sleep_for_1s()) for _ in range(500)] +
        [asyncio.create_task(b.sleep_for_1s()) for _ in range(500)],
        timeout=502
    )