docs: public static <T> T bindYmlToObj(String prefix, String content, Class<T> clazz, String charset,
                                       Properties baseProperties) {
          try {
              byte[] contentBytes;
              if (charset == null) {
                  contentBytes = content.getBytes("UTF-8");
              } else {
                  contentBytes = content.getBytes(charset);
              }
              YamlPropertySourceLoader propertySourceLoader = new YamlPropertySourceLoader();
              Resource configResource = new ByteArrayResource(contentBytes);
              PropertySource<?> propertySource = propertySourceLoader.load("manualBindConfig", configResource, null);
  
              if (propertySource == null) {
                  return null;
              }
  
              Properties properties = new Properties();
              Map<String, Object> propertiesRes = new LinkedHashMap<>();
              if (!StringUtils.isEmpty(prefix) && !prefix.endsWith(".")) {
                  prefix = prefix + ".";
              }
  
              properties.putAll((Map<?, ?>) propertySource.getSource());
  
              if (baseProperties != null) {
                  baseProperties.putAll(properties);
                  properties = baseProperties;
              }
  
              for (Map.Entry<?, ?> entry : ((Map<?, ?>) propertySource.getSource()).entrySet()) {
                  String key = (String) entry.getKey();
                  Object value = entry.getValue();
  
                  if (prefix != null) {
                      if (key != null && key.startsWith(prefix)) {
                          key = key.substring(prefix.length());
                      } else {
                          continue;
                      }
                  }
  
                  if (value instanceof String && ((String) value).contains("${") && ((String) value).contains("}")) {
                      PropertyPlaceholderHelper propertyPlaceholderHelper = new PropertyPlaceholderHelper("${", "}");
                      value = propertyPlaceholderHelper.replacePlaceholders((String) value, properties);
                  }
  
                  propertiesRes.put(key, value);
              }
  
              if (propertiesRes.isEmpty()) {
                  return null;
              }
  
              propertySource = new MapPropertySource(propertySource.getName(), propertiesRes);
  
              T target = clazz.newInstance();
  
              MutablePropertySources propertySources = new MutablePropertySources();
              propertySources.addFirst(propertySource);
  
              PropertiesConfigurationFactory<Object> factory = new PropertiesConfigurationFactory<Object>(target);
              factory.setPropertySources(propertySources);
              factory.setIgnoreInvalidFields(true);
              factory.setIgnoreUnknownFields(true);
  
              factory.bindPropertiesToTarget();
  
              return target;
          } catch (Exception e) {
              throw new RuntimeException(e);
          }
      }