docs: public static Shell createConsoleShell(String prompt, String appName, Object mainHandler,
                                             BufferedReader in, PrintStream out, PrintStream err,
                                             ConsoleIO.PromptListener promptListener) {
          ConsoleIO io = new ConsoleIO(in, out, err);
          if (promptListener != null) {
              io.setPromptListener(promptListener);
          }
  
          List<String> path = new ArrayList<String>(1);
          path.add(prompt);
  
          MultiMap<String, Object> modifAuxHandlers = new ArrayHashMultiMap<String, Object>();
          modifAuxHandlers.put("!", io);
  
          Shell theShell = new Shell(new Shell.Settings(io, io, modifAuxHandlers, false),
                  new CommandTable(new DashJoinedNamer(true)), path);
          theShell.setAppName(appName);
  
          theShell.addMainHandler(theShell, "!");
          theShell.addMainHandler(new HelpCommandHandler(), "?");
          theShell.addMainHandler(mainHandler, "");
  
          return theShell;
      }