docs: @Override
      @SuppressWarnings("unchecked")
      public <T> T get(Object config, String name, T defaultValue) {
          Class<?> cl = defaultValue == null || defaultValue instanceof Set ? String[].class : defaultValue.getClass();
          Optional<T> configuredValue = (Optional<T>) ((Config) config).getOptionalValue(name, cl);
          T value = configuredValue.orElse(defaultValue);
  
          if (value instanceof String[]) {
              // MicroProfile Config is unclear about whether empty value for String[] results in
              // an empty String array or a size 1 String array where the element is the empty string.
              // Allow for both possibilities,
              String[] arr = ((String[]) value);
              if (arr.length == 1 && arr[0].length() == 0) {
                  if (defaultValue instanceof Set)
                      value = (T) Collections.EMPTY_SET;
                  else // TODO remove if config annotations are removed
                      value = (T) new String[0];
              } else if (defaultValue instanceof Set) {
                  Set<String> set = new LinkedHashSet<String>();
                  Collections.addAll(set, arr);
                  value = (T) set;
              }
          }
  
          return value;
      }