def METHOD_NAME(f):
    @functools.wraps(f)
    async def wrapper(oself, *args, **kwargs):
        lock_name = "__" + f.__name__ + "_lock"
        if not hasattr(oself, lock_name):
            setattr(oself, lock_name, asyncio.Lock())
        async with getattr(oself, lock_name):
            return await f(oself, *args, **kwargs)
    return wrapper