public String inputHandler(Interaction interaction, Object data)
     throws ContextDataRequired, GeneralInteractionError, AbortInteraction {
   // first, check for pagination...
   PaginationAssistant paginator =
       interaction.getContextData(
           PaginationAssistant.class, interaction, getTranslationKey(interaction) + "_paginator");
   if (paginator != null) {
     boolean paginationCommand = paginator.processPageCommand(data.toString());
     if (paginationCommand) {
       interaction.pageWaitingForInput = true;
       return null;
     } else {
       // it wasn't a pagination command, so we kill the paginator
       // so we don't end up with a cache of old data if the player
       // comes back to this interaction page
       interaction.context.remove(getTranslationKey(interaction) + "_paginator");
     }
   }
   // if we don't have pagination (or it wasn't a pagination command..)
   //  see if we are using a choice model, or straight to direct input
   if (hasChoices) {
     Choices choices = Choices.getChoices(this, interaction);
     return choices.takeAction(this, interaction, data);
   } else return acceptValidatedInput(interaction, data);
 }