public String getDisplayText(Interaction interaction)
     throws ContextDataRequired, GeneralInteractionError, AbortInteraction {
   // TOOD: Pagination support...
   // see if we have an active paginator
   PaginationAssistant paginator =
       interaction.getContextData(
           PaginationAssistant.class, interaction, getTranslationKey(interaction) + "_paginator");
   if (paginator != null) {
     return paginator.getDisplayText();
   } else {
     // generate page content, and if there's too much, then activate a paginator..
     if (hasChoices) {
       Choices choices = Choices.getChoices(this, interaction);
       if (choices == null) choices = generateChoices(interaction);
       String text = generateDisplayBody(interaction) + "\n";
       String choiceText =
           interaction.parseMessage(StringUtils.join(choices.generateChoiceList(), ""));
       if (text.split("\n").length + choiceText.split("\n").length + 1 > maxLines) {
         // we'll need a paginator
         paginator = new PaginationAssistant(choiceText, maxLines, text);
         interaction.context.put(getTranslationKey(interaction) + "_paginator", paginator);
         return paginator.getDisplayText();
       } else return text + "\n" + choiceText;
     } else {
       String text = generateDisplayBody(interaction);
       if (text.split("\n").length > maxLines) {
         paginator = new PaginationAssistant(text, maxLines, "");
         interaction.context.put(getTranslationKey(interaction) + "_paginator", paginator);
         return paginator.getDisplayText();
       } else return text;
     }
   }
 }
 public String generateDisplayBody(Interaction interaction) {
   String text = null;
   if (translatableBody) text = VariableTool.variable(getTranslationKey(interaction) + ".text");
   else text = getText();
   return interaction.parseMessage(text);
 }