public void execute(CommandIssuer issuer, String commandLabel, String[] args) { commandLabel = commandLabel.toLowerCase(); try { CommandOperationContext commandContext = preCommandOperation(issuer, commandLabel, args, false); if (args.length > 0) { CommandSearch cmd = findSubCommand(args); if (cmd != null) { execSubcommand = cmd.getCheckSub(); final String[] execargs = Arrays.copyOfRange(args, cmd.argIndex, args.length); executeCommand(commandContext, issuer, execargs, cmd.cmd); return; } } if (subCommands.get(DEFAULT) != null && args.length == 0) { findAndExecuteCommand(commandContext, DEFAULT, issuer, args); } else if (subCommands.get(CATCHUNKNOWN) != null) { if (!findAndExecuteCommand(commandContext, CATCHUNKNOWN, issuer, args)) { help(issuer, args); } } else if (subCommands.get(DEFAULT) != null) { findAndExecuteCommand(commandContext, DEFAULT, issuer, args); } } finally { postCommandOperation(); } }