docs: private void updateValue(Value value) {
      while (true) {
        Value current = currentValue.get();
        if (value.isNewerThan(current)) {
          if (currentValue.compareAndSet(current, value)) {
            if (current == null || !Objects.equals(current.value(), value.value())) {
              eventListeners.forEach(listener -> listener.event(new ValueDelegateEvent<>(ValueDelegateEvent.Type.UPDATE, decode(value.value()))));
            }
            break;
          }
        } else {
          break;
        }
      }
    }