class RedisLock extends AbstractSimpleLock {
        private final String key;
        private final QuarkusRedisLockProvider quarkusLockProvider;

        private RedisLock(String key, QuarkusRedisLockProvider jedisLockProvider, LockConfiguration lockConfiguration) {
            super(lockConfiguration);
            this.key = key;
            this.quarkusLockProvider = jedisLockProvider;
        }

        @Override
        public void doUnlock() {<FILL_FUNCTION_BODY>}

        @Override
        @NonNull
        protected Optional<SimpleLock> doExtend(@NonNull LockConfiguration newConfiguration) {
            return quarkusLockProvider.extend(newConfiguration);
        }
    }

            long keepLockFor = getMillisUntil(lockConfiguration.getLockAtLeastUntil());

            // lock at least until is in the past
            if (keepLockFor <= 0) {
                try {
                    quarkusLockProvider.deleteKey(key);
                } catch (Exception e) {
                    throw new LockException("Can not remove key", e);
                }
            } else {
                quarkusLockProvider.extendKeyExpiration(key, keepLockFor);
            }
        
<no_super_class>