docs: private I_CmsSearchDocument appendFieldsForListSortOptions(I_CmsSearchDocument document) {
  
          // add non-localized fields
          // add instance date
          String fieldName = CmsSearchField.FIELD_INSTANCEDATE + CmsSearchField.FIELD_POSTFIX_DATE;
          Date instanceDate = document.getFieldValueAsDate(fieldName);
          if ((null == instanceDate) || (instanceDate.getTime() == 0)) {
              String instanceDateCopyField = document.getFieldValueAsString(
                  CmsPropertyDefinition.PROPERTY_INSTANCEDATE_COPYFIELD + CmsSearchField.FIELD_DYNAMIC_PROPERTIES);
              if (null != instanceDateCopyField) {
                  instanceDate = document.getFieldValueAsDate(instanceDateCopyField);
              }
              if ((null == instanceDate) || (instanceDate.getTime() == 0)) {
                  instanceDate = document.getFieldValueAsDate(CmsSearchField.FIELD_DATE_RELEASED);
              }
              if ((null == instanceDate) || (instanceDate.getTime() == 0)) {
                  instanceDate = document.getFieldValueAsDate(CmsSearchField.FIELD_DATE_LASTMODIFIED);
              }
              document.addDateField(fieldName, instanceDate.getTime(), false);
          }
  
          // add disp-title field
          fieldName = CmsSearchField.FIELD_DISPTITLE + CmsSearchField.FIELD_POSTFIX_SORT;
          String dispTitle = document.getFieldValueAsString(fieldName);
          if (null == dispTitle) {
              dispTitle = document.getFieldValueAsString(
                  CmsPropertyDefinition.PROPERTY_TITLE + CmsSearchField.FIELD_DYNAMIC_PROPERTIES_DIRECT);
              if (null == dispTitle) {
                  dispTitle = document.getFieldValueAsString(CmsSearchField.FIELD_FILENAME);
              }
              document.addSearchField(new CmsSolrField(fieldName, null, null, null), dispTitle);
          }
  
          // add disp-order field
          fieldName = CmsSearchField.FIELD_DISPORDER + CmsSearchField.FIELD_POSTFIX_INT;
          String dispOrder = document.getFieldValueAsString(fieldName);
          if (null == dispOrder) {
              dispOrder = document.getFieldValueAsString(
                  CmsPropertyDefinition.PROPERTY_DISPLAY_ORDER + CmsSearchField.FIELD_DYNAMIC_PROPERTIES);
              if (null != dispOrder) {
                  try {
                      int o = Integer.parseInt(dispOrder);
                      dispOrder = String.valueOf(o);
                  } catch (NullPointerException | NumberFormatException e) {
                      LOG.warn(
                          "Property "
                              + CmsPropertyDefinition.PROPERTY_DISPLAY_ORDER
                              + " contains not a valid integer number.");
                      dispOrder = "0";
                  }
              } else {
                  dispOrder = "0";
              }
              document.addSearchField(new CmsSolrField(fieldName, null, null, null), dispOrder);
          }
  
          // add localized fields
          for (String locale : document.getMultivaluedFieldAsStringList(CmsSearchField.FIELD_CONTENT_LOCALES)) {
              // instance date
              fieldName = CmsSearchField.FIELD_INSTANCEDATE + "_" + locale + CmsSearchField.FIELD_POSTFIX_DATE;
              Date presetInstanceDate = document.getFieldValueAsDate(fieldName);
              if ((null == presetInstanceDate) || (presetInstanceDate.getTime() == 0)) {
                  document.addDateField(fieldName, instanceDate.getTime(), false);
              }
              // disp-title field for title display and sorting
              fieldName = CmsSearchField.FIELD_DISPTITLE + "_" + locale + CmsSearchField.FIELD_POSTFIX_SORT;
              if (null == document.getFieldValueAsString(fieldName)) {
                  String localizedTitle = document.getFieldValueAsString(
                      CmsPropertyDefinition.PROPERTY_TITLE
                          + "_"
                          + locale
                          + CmsSearchField.FIELD_DYNAMIC_PROPERTIES_DIRECT);
                  document.addSearchField(
                      new CmsSolrField(fieldName, null, null, null),
                      null == localizedTitle ? dispTitle : localizedTitle);
              }
              // disp-order field
              fieldName = CmsSearchField.FIELD_DISPORDER + "_" + locale + CmsSearchField.FIELD_POSTFIX_INT;
              if (null == document.getFieldValueAsString(fieldName)) {
                  String localizedOrder = document.getFieldValueAsString(
                      CmsPropertyDefinition.PROPERTY_DISPLAY_ORDER
                          + "_"
                          + locale
                          + CmsSearchField.FIELD_DYNAMIC_PROPERTIES);
                  if (null != localizedOrder) {
                      try {
                          int o = Integer.parseInt(localizedOrder);
                          localizedOrder = String.valueOf(o);
                      } catch (NullPointerException | NumberFormatException e) {
                          LOG.warn(
                              "Property "
                                  + CmsPropertyDefinition.PROPERTY_DISPLAY_ORDER
                                  + "_"
                                  + locale
                                  + " contains not a valid integer number.");
                      }
                  }
                  document.addSearchField(
                      new CmsSolrField(fieldName, null, null, null),
                      null == localizedOrder ? dispOrder : localizedOrder);
              }
          }
  
          return document;
      }