code: public boolean accept(Message message) {
          Content content = message.getContent();
  
          if (!userPredicate.test(message.getSender())) {
              return false;
          }
  
          if (endPredicate != null && endPredicate.test(context, content)) {
              end();
              return true;
          }
  
          if (content.getType() != currentPrompt.type()) {
              return false;
          }
  
          if (repliesOnly) {
              Message repliedTo = message.getRepliedTo();
  
              if (repliedTo == null || repliedTo.getSender().getUsername().equals(context.getBot().getBotUsername())) {
                  return false;
              }
          }
  
          if (!currentPrompt.process(context, content)) {
              if (promptIndex + 1 == prompts.size()) {
                  end();
                  return true;
              }
  
              currentPrompt = prompts.get(++promptIndex);
          }
  
          SendableMessage promptMessage = currentPrompt.promptMessage(context);
  
          if (!silent && promptMessage != null) {
              sendMessage(promptMessage);
          }
  
          context.getHistory().history.add(message);
          return true;
      }
docs: Send internally; uses message to process the prompt, and move on to the next one.
  Calls the end() method if there are no further prompts.
  Do not call unless you understand what you're doing.
  
  @param message The message to be processed
  @return If the message prompted a prompt
  @see Conversation#end()