private <T> void autoRefreshFromPropertyResolver(final IClientConfigKey<T> key) {
        changeActions.computeIfAbsent(key, ignore -> {
            final Supplier<Optional<T>> valueSupplier = () -> resolveFromPropertyResolver(key);
            final Optional<T> current = valueSupplier.get();
            if (current.isPresent()) {
                internalProperties.put(key, current);
            }

            final AtomicReference<Optional<T>> previous = new AtomicReference<>(current);
            return () -> {
                final Optional<T> next = valueSupplier.get();
                if (!next.equals(previous.get())) {
                    LOG.info("[{}] new value for {}: {} -> {}", clientName, key.key(), previous.get(), next);
                    previous.set(next); 
                    internalProperties.put(key, next);
                }
            };
        });
    }
Register an action that will refresh the cached value for key. Uses the current value as a reference and will
update from the dynamic property source to either delete or set a new value.

@param key - Property key without client name or namespace
ribbon-core/src/main/java/com/netflix/client/config/ReloadableClientConfig.java