if (option.getShortName() != 'J')
if (! option.isJoined())
  public void printHelp(PrintStream out, boolean longOnly)  {    // Compute maximum lengths.    int maxArgLen = 0;    boolean shortOptionSeen = false;    Iterator it;    // The first pass only looks to see if we have a short option.    it = options.iterator();    while (it.hasNext())      {        Option option = (Option) it.next();        if (option.getShortName() != '\0')          {            shortOptionSeen = true;            break;          }      }    it = options.iterator();    while (it.hasNext())      {        Option option = (Option) it.next();        String argName = option.getArgumentName();        // First compute the width required for the short        // option. "2" is the initial indentation. In the        // GNU style we don't print an argument name for        // a short option if there is also a long name for        // the option.        int thisArgLen = 2;        if (shortOptionSeen)          thisArgLen += 4;        if (option.getLongName() != null)          {            // Handle either '-' or '--'.            thisArgLen += 1 + option.getLongName().length();            if (! longOnly)              ++thisArgLen;          }        // Add in the width of the argument name.        if (argName != null)          thisArgLen += 1 + argName.length();        maxArgLen = Math.max(maxArgLen, thisArgLen);      }    // Print the help.    if (name != null)      out.println(name + ":");    it = options.iterator();    while (it.hasNext())      {        Option option = (Option) it.next();        String argName = option.getArgumentName();        int column = 0;        if (option.getShortName() != '\0')          {            out.print("  -");            out.print(option.getShortName());            column += 4;            if (option.getLongName() == null)              {                if (argName != null)                  {                    // This is a silly hack just for '-J'.  We don't                    // support joined options in general, but this option                    // is filtered out before argument processing can see it.                    if (option.getShortName() != 'J')                      {                        out.print(' ');                        ++column;                      }                    out.print(argName);                    column += argName.length();                  }                out.print("  ");              }            else              out.print(", ");            column += 2;          }        // Indent the long option past the short options, if one        // was seen.        for (; column < (shortOptionSeen ? 6 : 2); ++column)          out.print(' ');        if (option.getLongName() != null)          {            out.print(longOnly ? "-" : "--");            out.print(option.getLongName());            column += (longOnly ? 1 : 2) + option.getLongName().length();            if (argName != null)              {                out.print(" " + argName);                column += 1 + argName.length();              }          }        // FIXME: should have a better heuristic for padding.        out.print(FILLER.substring(0, maxArgLen + 4 - column));        formatText(out, option.getDescription(), maxArgLen + 4);      }  }