docs: public Map<String, CmsXmlContentProperty> getFormatterSettings(
          CmsObject cms,
          I_CmsFormatterBean mainFormatter,
          CmsResource res,
          Locale locale,
          ServletRequest req) {
  
          Map<String, CmsXmlContentProperty> result = new LinkedHashMap<String, CmsXmlContentProperty>();
          Visibility defaultVisibility = Visibility.elementAndParentIndividual;
          if (mainFormatter != null) {
              for (Entry<String, CmsXmlContentProperty> entry : mainFormatter.getSettings().entrySet()) {
                  Visibility visibility = entry.getValue().getVisibility(defaultVisibility);
                  if (!(visibility.equals(Visibility.parentShared) || visibility.equals(Visibility.parentIndividual))) {
                      result.put(entry.getKey(), entry.getValue());
                  }
              }
              if (mainFormatter.hasNestedFormatterSettings()) {
                  List<I_CmsFormatterBean> nestedFormatters = getNestedFormatters(cms, res, locale, req);
                  if (nestedFormatters != null) {
                      for (I_CmsFormatterBean formatter : nestedFormatters) {
                          for (Entry<String, CmsXmlContentProperty> entry : formatter.getSettings().entrySet()) {
                              Visibility visibility = entry.getValue().getVisibility(defaultVisibility);
                              switch (visibility) {
                                  case parentShared:
                                  case elementAndParentShared:
                                      result.put(entry.getKey(), entry.getValue());
                                      break;
                                  case elementAndParentIndividual:
                                  case parentIndividual:
                                      String settingName = formatter.getId() + "_" + entry.getKey();
                                      CmsXmlContentProperty settingConf = entry.getValue().withName(settingName);
                                      result.put(settingName, settingConf);
                                      break;
                                  default:
                                      break;
                              }
                          }
                      }
                  }
              }
          }
          return result;
      }