docs: public void forAllMembers(String template, Properties attributes) throws XDocletException
      {
          if (getCurrentClass() == null) {
              return;
          }
  
          String className = attributes.getProperty("class");
          XClass type = null;
  
          if ((className == null) || (className.length() == 0)) {
              type = getCurrentClass();
          }
          else {
              XClass curType;
  
              for (Iterator it = ClassTagsHandler.getAllClasses().iterator(); it.hasNext(); ) {
                  curType = (XClass)it.next();
                  if (className.equals(curType.getQualifiedName())) {
                      type = curType;
                      break;
                  }
              }
              if (type == null) {
                  throw new XDocletException(Translator.getString(XDocletModulesOjbMessages.class,
                      XDocletModulesOjbMessages.COULD_NOT_FIND_TYPE,
                      new String[]{className}));
              }
          }
  
          String tagName = attributes.getProperty("tagName");
          String paramName = attributes.getProperty("paramName");
          String paramValue = attributes.getProperty("value");
          boolean superTypes = TypeConversionUtil.stringToBoolean(attributes.getProperty("superclasses"), true);
          boolean sort = TypeConversionUtil.stringToBoolean(attributes.getProperty("sort"), true);
          ArrayList allMemberNames = new ArrayList();
          HashMap allMembers = new HashMap();
  
          if (superTypes) {
              addMembersInclSupertypes(allMemberNames, allMembers, type, tagName, paramName, paramValue);
          }
          else {
              addMembers(allMemberNames, allMembers, type, tagName, paramName, paramValue);
          }
          if (sort) {
              Collections.sort(allMemberNames);
          }
          for (Iterator it = allMemberNames.iterator(); it.hasNext(); ) {
              XMember member = (XMember) allMembers.get(it.next());
  
              if (member instanceof XField) {
                  setCurrentField((XField) member);
              }
              else if (member instanceof XMethod) {
                  setCurrentMethod((XMethod) member);
              }
              generate(template);
              if (member instanceof XField) {
                  setCurrentField(null);
              }
              else if (member instanceof XMethod) {
                  setCurrentMethod(null);
              }
          }
      }