docs: private void buildIndex(String startfolder) throws Exception {
  
          File folder = new File(startfolder);
          // get all subresources
  
          File[] subresources = folder.listFiles();
          // now loop through all subresources and add them to the index list
          for (int i = 0; i < subresources.length; i++) {
              try {
  
                  String relativeFSName = subresources[i].getAbsolutePath().substring(m_inputDir.length() + 1);
                  String absoluteVFSName = getVfsName(
                      relativeFSName,
                      subresources[i].getName(),
                      subresources[i].isFile());
                  m_report.print(Messages.get().container(Messages.RPT_CREATE_INDEX_0), I_CmsReport.FORMAT_NOTE);
                  m_report.print(
                      org.opencms.report.Messages.get().container(
                          org.opencms.report.Messages.RPT_ARGUMENT_1,
                          relativeFSName.replace('\\', '/')));
                  m_report.print(org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_DOTS_0));
                  m_report.print(Messages.get().container(Messages.RPT_ARROW_RIGHT_0), I_CmsReport.FORMAT_NOTE);
                  m_report.print(
                      org.opencms.report.Messages.get().container(
                          org.opencms.report.Messages.RPT_ARGUMENT_1,
                          absoluteVFSName));
                  m_report.print(org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_DOTS_0));
                  m_fileIndex.put(subresources[i].getAbsolutePath().replace('\\', '/'), absoluteVFSName);
                  // if the subresource is a folder, get all subresources of it as well
                  if (subresources[i].isDirectory()) {
                      buildIndex(subresources[i].getAbsolutePath());
                  }
                  m_report.println(
                      org.opencms.report.Messages.get().container(org.opencms.report.Messages.RPT_OK_0),
                      I_CmsReport.FORMAT_OK);
              } catch (Exception e) {
                  LOG.error(e.getLocalizedMessage(), e);
                  m_report.println(e);
              }
          }
      }