@Nonnull
 @Override
 public IPreparedCommand createAction(
     @Nonnull ICommandExecutor executor,
     @Nonnull Stack<ICommandHandler> stack,
     @Nonnull String[] args,
     @Nonnull IArgumentList params) {
   console.debugFiner(
       "Preparing AsyncCallback command with %d params and %d args", params.size(), args.length);
   return new PreparedAsynchronousCallbackCommand(executor, stack, args, params);
 }
 @Override
 public String OnExecute(ICommandExecutor executor, IArgumentList parameters) {
   IPlayer player = parameters.getValue("player");
   if (player == null) return null;
   this.history.save(player);
   player.getInventory().clear();
   player.updateInventory();
   if (executor instanceof IPlayer && executor.getName().equals(player.getName()))
     return "&2Your inventory has been cleared.";
   return "&2Inventory for " + player.getPrettyName() + " &2cleared.";
 }
  @Override
  public String OnExecute(ICommandExecutor executor, IArgumentList parameters) {
    String command = parameters.getRequired("command");
    PluginCommand commandObject = plugin.getServer().getPluginCommand(command);
    if (commandObject == null) commandObject = findCommandByAlias(command);
    if (commandObject == null) return "&cNo regular command found matching '" + command + "'!";

    if (command.equalsIgnoreCase(commandObject.getName()))
      return "The command '"
          + commandObject.getName()
          + "' is provided by '"
          + commandObject.getPlugin()
          + '\'';
    else
      return '\''
          + command
          + "' maps to the command '"
          + commandObject.getName()
          + "' which is provided by '"
          + commandObject.getPlugin()
          + '\'';
  }