public void usage(PrintStream out, boolean showSecretMenu) { usageHeader(out); boolean firstSecretItem = true; List<OptFlag<?>> sorted = new ArrayList<>(flags); Collections.sort(sorted, null); for (OptFlag<?> flag : sorted) { boolean isSecret = flag.kind.compareTo(Kind.SECRET) >= 0; if (showSecretMenu && isSecret && firstSecretItem) { out.println(); out.println("Secret menu:"); firstSecretItem = false; } if (showSecretMenu || !isSecret) flag.printUsage(out); } }