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);
    }
  }