@Override
    public final boolean execute(CommandInvocation invocation)
    {
        try
        {
            this.checkInvocation(invocation);
            if (!invocation.isConsumed())
            {
                CommandBase command = this.getCommand(invocation.currentToken());
                if (command != null)
                {
                    return command.execute(invocation.subInvocation(command));
                }
            }
            return this.selfExecute(invocation);
        }
        catch (Exception e)
        {
            this.handleException(e, invocation);
            return true;
        }
    }