code: private Content processParamTags(boolean isNonTypeParams,
              ParamTag[] paramTags, Map<String, String> rankMap, TagletWriter writer,
              Set<String> alreadyDocumented) {
          Content result = writer.getOutputInstance();
          if (paramTags.length > 0) {
              for (int i = 0; i < paramTags.length; ++i) {
                  ParamTag pt = paramTags[i];
                  String paramName = isNonTypeParams ?
                      pt.parameterName() : "<" + pt.parameterName() + ">";
                  if (! rankMap.containsKey(pt.parameterName())) {
                      writer.getMsgRetriever().warning(pt.position(),
                          isNonTypeParams ?
                              "doclet.Parameters_warn" :
                              "doclet.Type_Parameters_warn",
                          paramName);
                  }
                  String rank = rankMap.get(pt.parameterName());
                  if (rank != null && alreadyDocumented.contains(rank)) {
                      writer.getMsgRetriever().warning(pt.position(),
                         isNonTypeParams ?
                             "doclet.Parameters_dup_warn" :
                             "doclet.Type_Parameters_dup_warn",
                         paramName);
                  }
                  result.addContent(processParamTag(isNonTypeParams, writer, pt,
                       pt.parameterName(), alreadyDocumented.size() == 0));
                  alreadyDocumented.add(rank);
              }
          }
          return result;
      }
docs: Given an array of <code>Tag</code>s representing this custom
  tag, return its string representation.  Print a warning for param
  tags that do not map to parameters.  Print a warning for param
  tags that are duplicated.
  
  @param paramTags the array of <code>ParamTag</code>s to convert.
  @param writer the TagletWriter that will write this tag.
  @param alreadyDocumented the set of exceptions that have already
  been documented.
  @param rankMap a {@link java.util.Map} which holds ordering
  information about the parameters.
  @param rankMap a {@link java.util.Map} which holds a mapping
  of a rank of a parameter to its name.  This is
  used to ensure that the right name is used
  when parameter documentation is inherited.
  @return the Content representation of this <code>Tag</code>.