docs: public String toHtml() {
  
          CmsMacroResolver resolver = new CmsMacroResolver();
          if (CmsStringUtil.isEmpty(m_title)) {
              m_title = m_messages.key(Messages.GUI_ERROR_0, new Object[] {});
          }
          resolver.addMacro("title", m_title);
          resolver.addMacro("label_error", m_messages.key(Messages.GUI_ERROR_0, new Object[] {}));
          resolver.addMacro("errorstack", CmsException.getFormattedErrorstack(m_throwable));
          resolver.addMacro("message", CmsStringUtil.escapeHtml(getErrorMessage()));
          resolver.addMacro(
              "styleuri",
              OpenCms.getLinkManager().substituteLink(m_cms, "/system/workplace/commons/style/workplace.css"));
          if (CmsStringUtil.isEmpty(m_buttons)) {
              resolver.addMacro("buttons", getDefaultButtonsHtml());
          } else {
              resolver.addMacro("buttons", m_buttons);
              resolver.addMacro("paramaction", m_paramAction);
          }
  
          if (CmsStringUtil.isNotEmpty(m_hiddenParams)) {
              resolver.addMacro("hiddenparams", m_hiddenParams);
          }
          resolver.addMacro(
              "erroricon",
              OpenCms.getLinkManager().substituteLink(m_cms, "/system/workplace/resources/commons/error.png"));
          Properties errorpage = new Properties();
          try {
              errorpage.load(CmsErrorBean.class.getClassLoader().getResourceAsStream(ERRORPAGE));
          } catch (Throwable th) {
              CmsLog.INIT.error(
                  org.opencms.main.Messages.get().getBundle().key(
                      org.opencms.main.Messages.INIT_ERR_LOAD_HTML_PROPERTY_FILE_1,
                      ERRORPAGE),
                  th);
          }
          return resolver.resolveMacros(errorpage.getProperty("ERRORPAGE"));
      }