docs: protected void addDefaultPreferencesRules(Digester digester) {
  
          // creation of the default user settings
          digester.addObjectCreate("*/" + N_WORKPLACE + "/" + N_DEFAULTPREFERENCES, CmsDefaultUserSettings.class);
          digester.addSetNext("*/" + N_WORKPLACE + "/" + N_DEFAULTPREFERENCES, "setDefaultUserSettings");
  
          // TODO: most of these settings are not user dependent, so they should not be stored in the CmsDefaultUserSettings class
  
          // add workplace preferences general options rules
          String xPathPrefix = "*/"
              + N_WORKPLACE
              + "/"
              + N_DEFAULTPREFERENCES
              + "/"
              + N_WORKPLACEPREFERENCES
              + "/"
              + N_WORKPLACEGENERALOPTIONS;
          digester.addCallMethod(xPathPrefix + "/" + N_BUTTONSTYLE, "setWorkplaceButtonStyle", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_REPORTTYPE, "setWorkplaceReportType", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_UPLOADAPPLET, "setUploadVariant", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_LISTALLPROJECTS, "setListAllProjects", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_PUBLISHNOTIFICATION, "setShowPublishNotification", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_PUBLISHBUTTONAPPEARANCE, "setPublishButtonAppearance", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_SHOWFILEUPLOADBUTTON, "setShowFileUploadButton", 0);
  
          // add allow broken relations rule
          digester.addCallMethod(xPathPrefix + "/" + N_ALLOWBROKENRELATIONS, "setAllowBrokenRelations", 0);
  
          // add publish related resources rule
          digester.addCallMethod(xPathPrefix + "/" + N_PUBLISHRELATEDRESOURCES, "setPublishRelatedResourcesMode", 0);
  
          // add rules for the new folder dialog settings
          digester.addCallMethod(xPathPrefix + "/" + N_NEWFOLDEREDITPROPERTIES, "setNewFolderEditProperties", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_NEWFOLDERCREATEINDEXPAGE, "setNewFolderCreateIndexPage", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_SHOWUPLOADTYPEDIALOG, "setShowUploadTypeDialog", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_SUBSITEMAP_CREATION_MODE, "setSubsitemapCreationMode", 0);
  
          // add workplace preferences startup settings rules
          xPathPrefix = "*/"
              + N_WORKPLACE
              + "/"
              + N_DEFAULTPREFERENCES
              + "/"
              + N_WORKPLACEPREFERENCES
              + "/"
              + N_WORKPLACESTARTUPSETTINGS;
          digester.addCallMethod(xPathPrefix + "/" + N_LOCALE, "setLocale", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_PROJECT, "setStartProject", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_WORKPLACEVIEW, "setStartView", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_FOLDER, "setStartFolder", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_SITE, "setStartSite", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_RESTRICTEXPLORERVIEW, "setRestrictExplorerView", 0);
  
          // add workplace search rules
          xPathPrefix = "*/"
              + N_WORKPLACE
              + "/"
              + N_DEFAULTPREFERENCES
              + "/"
              + N_WORKPLACEPREFERENCES
              + "/"
              + N_WORKPLACESEARCH;
          digester.addCallMethod(xPathPrefix + "/" + N_SEARCHINDEXNAME, "setWorkplaceSearchIndexName", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_SEARCHVIEWSTYLE, "setWorkplaceSearchViewStyle", 0);
  
          // add explorer preferences generaloptions rules
          xPathPrefix = "*/"
              + N_WORKPLACE
              + "/"
              + N_DEFAULTPREFERENCES
              + "/"
              + N_EXPLORERPREFERENCES
              + "/"
              + N_EXPLORERGENERALOPTIONS;
          digester.addCallMethod(xPathPrefix + "/" + N_BUTTONSTYLE, "setExplorerButtonStyle", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_ENTRIES, "setExplorerFileEntries", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_ENTRYOPTIONS, "setExplorerFileEntryOptions", 0);
  
          // add explorer display options rules
          xPathPrefix = "*/"
              + N_WORKPLACE
              + "/"
              + N_DEFAULTPREFERENCES
              + "/"
              + N_EXPLORERPREFERENCES
              + "/"
              + N_EXPLORERDISPLAYOPTIONS;
          digester.addCallMethod(xPathPrefix + "/" + N_TITLE, "setShowExplorerFileTitle", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_NAVTEXT, "setShowExplorerFileNavText", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_TYPE, "setShowExplorerFileType", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_DATELASTMODIFIED, "setShowExplorerFileDateLastModified", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_DATECREATED, "setShowExplorerFileDateCreated", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_LOCKEDBY, "setShowExplorerFileLockedBy", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_PERMISSIONS, "setShowExplorerFilePermissions", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_SIZE, "setShowExplorerFileSize", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_STATE, "setShowExplorerFileState", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_USERLASTMODIFIED, "setShowExplorerFileUserLastModified", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_USERCREATED, "setShowExplorerFileUserCreated", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_DATERELEASED, "setShowExplorerFileDateReleased", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_DATEEXPIRED, "setShowExplorerFileDateExpired", 0);
  
          // add dialog preferences rules
          xPathPrefix = "*/"
              + N_WORKPLACE
              + "/"
              + N_DEFAULTPREFERENCES
              + "/"
              + N_DIALOGSPREFERENCES
              + "/"
              + N_DIALOGSDEFAULTSETTINGS;
          digester.addCallMethod(xPathPrefix + "/" + N_FILECOPY, "setDialogCopyFileMode", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_FOLDERCOPY, "setDialogCopyFolderMode", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_FILEDELETION, "setDialogDeleteFileMode", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_DIRECTPUBLISH, "setDialogPublishSiblings", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_SHOWLOCK, "setShowLockDialog", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_SHOWEXPORTSETTINGS, "setShowExportSettingsDialog", 0);
          digester.addCallMethod(
              xPathPrefix + "/" + N_PERMISSIONSINHERITONFOLDER,
              "setDialogPermissionsInheritOnFolder",
              0);
          digester.addCallMethod(
              xPathPrefix + "/" + N_EXPANDPERMISSIONSINHERITED,
              "setDialogExpandInheritedPermissions",
              0);
          digester.addCallMethod(xPathPrefix + "/" + N_EXPANDPERMISSIONSUSER, "setDialogExpandUserPermissions", 0);
  
          // add editor generaloptions rules
          xPathPrefix = "*/"
              + N_WORKPLACE
              + "/"
              + N_DEFAULTPREFERENCES
              + "/"
              + N_EDITORPREFERENCES
              + "/"
              + N_EDITORGENERALOPTIONS;
          digester.addCallMethod(xPathPrefix + "/" + N_BUTTONSTYLE, "setEditorButtonStyle", 0);
          digester.addCallMethod(xPathPrefix + "/" + N_DIRECTEDITSTYLE, "setDirectEditButtonStyle", 0);
  
          // add editor preferrededitor rules
          xPathPrefix = "*/"
              + N_WORKPLACE
              + "/"
              + N_DEFAULTPREFERENCES
              + "/"
              + N_EDITORPREFERENCES
              + "/"
              + N_EDITORPREFERREDEDITORS;
          digester.addCallMethod(xPathPrefix + "/" + N_EDITOR, "setPreferredEditor", 2);
          digester.addCallParam(xPathPrefix + "/" + N_EDITOR, 0, A_TYPE);
          digester.addCallParam(xPathPrefix + "/" + N_EDITOR, 1, A_VALUE);
  
          // add startgallery rules
          xPathPrefix = "*/"
              + N_WORKPLACE
              + "/"
              + N_DEFAULTPREFERENCES
              + "/"
              + N_GALLERIESPREFERENCES
              + "/"
              + N_STARTGALLERIES;
          digester.addCallMethod(xPathPrefix + "/" + N_STARTGALLERY, "setStartGallery", 2);
          digester.addCallParam(xPathPrefix + "/" + N_STARTGALLERY, 0, A_TYPE);
          digester.addCallParam(xPathPrefix + "/" + N_STARTGALLERY, 1, A_PATH);
  
          digester.addRule("*/" + N_WORKPLACE + "/" + N_DEFAULTPREFERENCES + "/preference-tab", new Rule() {
  
              @Override
              public void begin(String namespace, String name, Attributes attributes) throws Exception {
  
                  getDigester().push(attributes.getValue("name"));
              }
  
              @Override
              public void end(String namespace, String name) throws Exception {
  
                  getDigester().pop();
              }
          });
  
          String prefPath = "*/" + N_WORKPLACE + "/" + N_DEFAULTPREFERENCES + "/preference-tab/" + N_PREFERENCE;
          digester.addRule(prefPath, new CallMethodRule(1, "addPreference", 9));
          digester.addCallParam(prefPath, 0, A_NAME);
          digester.addCallParam(prefPath, 1, A_VALUE);
          digester.addCallParam(prefPath, 2, A_WIDGET);
          digester.addCallParam(prefPath, 3, A_WIDGET_CONFIG);
          digester.addCallParam(prefPath, 4, A_NICE_NAME);
          digester.addCallParam(prefPath, 5, A_DESCRIPTION);
          digester.addCallParam(prefPath, 6, A_RULE_REGEX);
          digester.addCallParam(prefPath, 7, A_ERROR);
          digester.addCallParam(prefPath, 8, 0);
      }