code: public void usage() {
      String commandName = "";
      String commandDescription = "";
      
      CLICommand commandAnnotation = this.getClass().getAnnotation(CLICommand.class);
      
      if (commandAnnotation == null) {
        Parameters commandParameters = this.getClass().getAnnotation(Parameters.class);
        if (commandParameters != null) {
          commandName = commandParameters.commandNames()[0];
          commandDescription = commandParameters.commandDescription();
        }
      } else {
        commandName = commandAnnotation.name();
        commandDescription = commandAnnotation.description();
      }
      
      Console.info("Help for ["+commandName+"].");
      if (commandDescription != null && !commandDescription.isEmpty()) {
        Console.info("Description: " + commandDescription);
      }
      
      JCommander comm = new JCommander(this);
      comm.setProgramName(commandName);
  
      HashMap<String, Command<T>> commandInstances = getCommands();
      for (Command<T> commandInstance : commandInstances.values()) {
        comm.addCommand(commandInstance);
      }
  
      comm.usage();
    }
docs: Print the usage for the command. By default, this prints the description
  and available parameters.