code: @Override
      public String getGroupNameForWorkUnit(final DocWorkUnit workUnit) {
          String groupName = workUnit.getDocumentedFeature().groupName();
          if (groupName == null || groupName.isEmpty()) {
              final CommandLineProgramGroup clpGroup = workUnit.getCommandLineProgramGroup();
              if (clpGroup != null) {
                  groupName = clpGroup.getName();
              }
              if (groupName == null || groupName.isEmpty()) {
                  logger.warn("No group name declared for: " + workUnit.getClazz().getCanonicalName());
                  groupName = "";
              }
          }
          return groupName;
      }
docs: Get the group name string to be used for a given work unit, applying any fallback policy. This is
  called by the work unit handler after the work unit has been populated, and may be overridden by
  subclasses to provide custom behavior.
  
  @param workUnit
  @return the group name to be used for this work unit