/**
   * Appends a function
   *
   * @param comment
   */
  private void emitFunction(DocComment comment) {
    xml.append("\n<method name='");
    xml.append(comment.getName());
    xml.append("' fullname='");
    xml.append(comment.getFullname());
    xml.append("' ");
    xml.append("isStatic='");
    xml.append(comment.isStatic());
    xml.append("' ");
    xml.append("isFinal='");
    xml.append(comment.isFinal());
    xml.append("' ");
    xml.append("isOverride='");
    xml.append(comment.isOverride());
    xml.append("' ");

    String[] param_names = comment.getParamNames();
    if (param_names != null) {
      xml.append(" param_names='");
      for (int i = 0; i < param_names.length; i++) {
        String pname = param_names[i];
        if (pname != null) {
          if (i != 0) xml.append(";");
          xml.append(pname);
        }
      }
      xml.append("'");

      String[] param_types = comment.getParamTypes();
      xml.append(" param_types='");
      for (int i = 0; i < param_types.length; i++) {
        String ptype = param_types[i];
        if (ptype != null) {
          if (i != 0) xml.append(";");
          xml.append(ptype);
        }
      }
      xml.append("'");

      String[] param_defaults = comment.getParamDefaults();
      xml.append(" param_defaults='");
      for (int i = 0; i < param_defaults.length; i++) {
        String pdefa = param_defaults[i];
        if (pdefa != null) {
          if (i != 0) xml.append(";");
          xml.append(pdefa);
        }
      }
      xml.append("'");
    }

    xml.append(" result_type='");
    xml.append(comment.getResultType());
    xml.append("'>");

    String desc = comment.getDescription();
    if (desc != null) appendTag("description", comment.getDescription());
    emitTags(comment.getAllTags());

    if (comment.getMetadata() != null) emitMetadata(comment.getMetadata());
    xml.append("\n</method>");
  }