docs: public boolean run(String... arguments) throws Exception {
          try {
              if (isFlag(HELP, arguments)) {
                  parser.printHelp(stdOut);
              } else if (isFlag(VERSION, arguments)) {
                  parser.printVersion(stdOut);
              } else {
                  final Namespace namespace = parser.parseArgs(arguments);
                  final Command command = requireNonNull(commands.get(namespace.getString(COMMAND_NAME_ATTR)),
                      "Command is not found");
                  try {
                      command.run(bootstrap, namespace);
                  } catch (Throwable e) {
                      // The command failed to run, and the command knows
                      // best how to cleanup / debug exception
                      command.onError(this, namespace, e);
                      return false;
                  }
              }
              return true;
          } catch (HelpScreenException ignored) {
              // This exception is triggered when the user passes in a help flag.
              // Return true to signal that the process executed normally.
              return true;
          } catch (ArgumentParserException e) {
              stdErr.println(e.getMessage());
              e.getParser().printHelp(stdErr);
              return false;
          }
      }