docs: public List<CmsPublishResource> getBrokenResources(List<CmsResource> pubResources) {
  
          List<CmsPublishResource> resources = new ArrayList<CmsPublishResource>();
          CmsPublishManager publishManager = OpenCms.getPublishManager();
  
          CmsPublishList publishList;
          try {
              publishList = OpenCms.getPublishManager().getPublishListAll(
                  m_cms,
                  pubResources,
                  m_options.isIncludeSiblings(),
                  true);
              if (m_options.isIncludeRelated()) {
                  CmsPublishList related = publishManager.getRelatedResourcesToPublish(m_cms, publishList);
                  publishList = publishManager.mergePublishLists(m_cms, publishList, related);
              }
  
          } catch (CmsException e) {
              // should never happen
              LOG.error(e.getLocalizedMessage(), e);
              return resources;
          }
  
          CmsRelationPublishValidator validator = new CmsRelationPublishValidator(m_cms, publishList);
          m_relationValidator = validator;
          for (String resourceName : validator.keySet()) {
              CmsRelationValidatorInfoEntry infoEntry = validator.getInfoEntry(resourceName);
              try {
                  CmsResource resource = m_cms.readResource(
                      m_cms.getRequestContext().removeSiteRoot(resourceName),
                      CmsResourceFilter.ALL);
                  if (resource.getState().isDeleted()) {
                      for (CmsRelation relation : infoEntry.getRelations()) {
                          try {
                              CmsResource theResource = relation.getSource(m_cms, CmsResourceFilter.ALL);
                              CmsPublishResourceInfo info = new CmsPublishResourceInfo(
                                  Messages.get().getBundle(m_workplaceLocale).key(Messages.GUI_BROKEN_LINK_ONLINE_0),
                                  CmsPublishResourceInfo.Type.BROKENLINK);
                              // HACK: GWT serialization does not like unmodifiable collections :(
                              // Collections.singletonList(resourceToBean(resource, info, false, null)));
                              ArrayList<CmsPublishResource> relatedList = new ArrayList<CmsPublishResource>();
                              relatedList.add(resourceToBean(resource, info, false, null));
                              CmsPublishResource pubRes = resourceToBean(theResource, null, false, relatedList);
                              resources.add(pubRes);
                          } catch (CmsException e) {
                              // should never happen
                              LOG.error(e.getLocalizedMessage(), e);
                          }
                      }
                  } else {
                      try {
                          List<CmsPublishResource> related = new ArrayList<CmsPublishResource>();
                          for (CmsRelation relation : infoEntry.getRelations()) {
                              try {
                                  CmsResource theResource = relation.getTarget(m_cms, CmsResourceFilter.ALL);
                                  CmsPublishResource pubRes = resourceToBean(theResource, null, false, null);
                                  related.add(pubRes);
                              } catch (CmsException e) {
                                  CmsPublishResource pubRes = relationToBean(relation);
                                  related.add(pubRes);
                                  LOG.warn(e.getLocalizedMessage(), e);
                              }
                          }
                          CmsPublishResourceInfo info = new CmsPublishResourceInfo(
                              Messages.get().getBundle(m_workplaceLocale).key(Messages.GUI_RESOURCE_MISSING_ONLINE_0),
                              CmsPublishResourceInfo.Type.MISSING);
                          CmsPublishResource pubRes = resourceToBean(resource, info, false, related);
                          resources.add(pubRes);
                      } catch (Exception e) {
                          // should never happen
                          LOG.error(e.getLocalizedMessage(), e);
                      }
                  }
              } catch (CmsException e) {
                  // should never happen
                  LOG.error(e.getLocalizedMessage(), e);
              }
          }
  
          return resources;
      }