docs: public static SortedMap<String, Object> getMaskedBeanProperties(Object beanObject, String[] maskProperties) {
      try {
        SortedMap<String, Object> configProperties = new TreeMap<String, Object>(BeanUtils.describe(beanObject));
  
        // always ignore "class" properties which is added by BeanUtils.describe by default
        configProperties.remove("class");
  
        // Mask some properties with confidential information (if set to any value)
        if (maskProperties != null) {
          for (String propertyName : maskProperties) {
            if (configProperties.containsKey(propertyName) && configProperties.get(propertyName) != null) {
              configProperties.put(propertyName, "***");
            }
          }
        }
  
        return configProperties;
      }
      catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException ex) {
        throw new IllegalArgumentException("Unable to get properties from: " + beanObject, ex);
      }
    }