@Override
 public Command getBackCommand() {
   Command backCommand = null;
   List<Command> commands = source.getCommands();
   if (commands != null) {
     for (int i = 0; i < commands.size(); i++) {
       Command command = commands.get(i);
       if (command.getStyle() == Command.CommandStyle.Back) {
         backCommand = command;
         break;
       }
     }
   }
   return backCommand;
 }
 @Override
 public boolean shouldShowMoreOption() {
   int count = 0;
   boolean hasMoreOnly = false;
   List<Command> commands = source.getCommands();
   for (int i = 0; i < commands.size(); i++) {
     Command command = commands.get(i);
     Command.CommandStyle commandStyle = command.getStyle();
     if (!(commandStyle == Command.CommandStyle.Secret
         || commandStyle == Command.CommandStyle.Back)) {
       count++;
       if (commandStyle == Command.CommandStyle.MoreOnly) {
         hasMoreOnly = true;
         break;
       }
     }
   }
   return (count >= maxBarButtons || hasMoreOnly);
 }
 private List<Command> getCommands(Integer max, boolean includeBack, boolean includeSecret) {
   List<Command> commands = source.getCommands();
   ArrayList<Command> result;
   if (commands != null) {
     result = new ArrayList<Command>(commands.size());
     for (int i = 0; i < commands.size(); i++) {
       Command command = commands.get(i);
       if ((command.getStyle() != Command.CommandStyle.Back || includeBack)
           && (command.getStyle() != Command.CommandStyle.Secret
                   && command.getStyle() != Command.CommandStyle.MoreOnly
               || includeSecret)) {
         result.add(command);
         if (max != null && result.size() >= max) {
           break;
         }
       }
     }
   } else {
     result = null;
   }
   return result;
 }
 @Override
 public String getTitle() {
   return source.getTitle();
 }