System.out.printf("  %s(%s) %s\n", c.getName(), c.getAlias(), c.getHelp());
System.out.printf("  %s(%s) %s%n%n", c.getName(), c.getAlias(), c.getHelp());
    private void doHelp(String[] args) {        Category cat = null;        if (args != null && args.length >= 2) {            String s = args[1].toUpperCase();            try {                cat = Category.valueOf(s);            } catch (IllegalArgumentException e) {                for (Category c : Category.values()) {                    if (c.name().startsWith(s)) {                        cat = c;                        break;                    }                }                         }        }        if (args == null || args.length == 1 || cat == null) {            System.out.println(" zmprov is used for provisioning. Try:");            System.out.println("");            for (Category c: Category.values()) {                System.out.printf("     zmprov help %-15s %s\n", c.name().toLowerCase(), c.getDescription());            }                    }                if (cat != null) {            System.out.println("");                        for (Command c : Command.values()) {                if (!c.hasHelp()) continue;                if (cat == Category.COMMANDS || cat == c.getCategory())                    System.out.printf("  %s(%s) %s\n", c.getName(), c.getAlias(), c.getHelp());            }                    if (cat == Category.CALENDAR) {                System.out.println("");                                StringBuilder sb = new StringBuilder();                EntrySearchFilter.Operator vals[] = EntrySearchFilter.Operator.values();                for (int i = 0; i < vals.length; i++) {                    if (i > 0)                        sb.append(", ");                    sb.append(vals[i].toString());                }                System.out.println("    op = " + sb.toString());            }        }        System.out.println();    }