docs: public static CmsPropertyConfig parseProperty(CmsObject cms, I_CmsXmlContentLocation field) {
  
          String name = getString(cms, field.getSubValue(N_PROPERTY_NAME));
          String includeName = getString(cms, field.getSubValue(N_INCLUDE_NAME));
          String widget = getString(cms, field.getSubValue(N_WIDGET));
          String widgetConfig = getString(cms, field.getSubValue(N_WIDGET_CONFIG));
          String ruleRegex = getString(cms, field.getSubValue(N_RULE_REGEX));
          String ruleType = getString(cms, field.getSubValue(N_RULE_TYPE));
          String default1 = getString(cms, field.getSubValue(N_DEFAULT));
          String error = getString(cms, field.getSubValue(N_ERROR));
          String niceName = getString(cms, field.getSubValue(N_DISPLAY_NAME));
          String description = getString(cms, field.getSubValue(N_DESCRIPTION));
          String preferFolder = getString(cms, field.getSubValue(N_PREFER_FOLDER));
  
          String disabledStr = getString(cms, field.getSubValue(N_DISABLED));
          boolean disabled = ((disabledStr != null) && Boolean.parseBoolean(disabledStr));
  
          String orderStr = getString(cms, field.getSubValue(N_ORDER));
          int order = I_CmsConfigurationObject.DEFAULT_ORDER;
  
          try {
              order = Integer.parseInt(orderStr);
          } catch (NumberFormatException e) {
              // noop
          }
  
          Visibility visibility;
          String visibilityStr = getString(cms, field.getSubValue(N_VISIBILITY));
          try {
              // to stay compatible with former visibility option values
              if ("both".equals(visibilityStr)) {
                  visibilityStr = Visibility.elementAndParentIndividual.name();
              } else if ("parent".equals(visibilityStr)) {
                  visibilityStr = Visibility.parentShared.name();
              }
              visibility = Visibility.valueOf(visibilityStr);
          } catch (Exception e) {
              visibility = null;
          }
          CmsXmlContentProperty prop = new CmsXmlContentProperty(
              name,
              "string",
              visibility,
              widget,
              widgetConfig,
              ruleRegex,
              ruleType,
              default1,
              niceName,
              description,
              error,
              preferFolder).withIncludeName(includeName);
          // since these are real properties, using type vfslist makes no sense, so we always use the "string" type
          CmsPropertyConfig propConfig = new CmsPropertyConfig(prop, disabled, order);
          return propConfig;
  
      }