docs: public static Map<String, ?> redactValues(Map<String, ?> map) {
          Map<String, Object> result = new LinkedHashMap<String, Object>();
          result.putAll(map);
          for (String key : map.keySet()) {
              Object value = map.get(key);
              if (value == null) {
                  result.put(key, value);
               } else if (value instanceof Map) {
                  @SuppressWarnings("unchecked")
                  Map<String, ?> bare = (Map<String, ?>) value;
                  result.put(key, redactValues(bare));
              } else if (value instanceof String && StringUtils.isEmpty(value)){
                  result.put(key, "");
              } else {
                  result.put(key, "<redacted>");
              }
          }
          return result;
      }