@@ -0,0 +1,1223 @@
+package apostov;%0D%0A%0D%0Aimport java.io.FileDescriptor;%0D%0Aimport java.io.FileInputStream;%0D%0Aimport java.io.IOException;%0D%0Aimport java.io.InputStream;%0D%0Aimport java.io.PrintWriter;%0D%0A%0D%0Aimport jline.console.ConsoleReader;%0D%0Aimport jline.console.completer.FileNameCompleter;%0D%0Aimport jline.console.completer.StringsCompleter;%0D%0A%0D%0Apublic class JLineMain %7B%0D%0A%0D%0A%09public static void main(final String%5B%5D args) throws IOException %7B%0D%0A%09%09%0D%0A%09%09final ConsoleReader reader = new ConsoleReader();%0D%0A%0D%0A%09%09reader.setPrompt(%22%3E %22);%0D%0A%09%09reader.addCompleter(new StringsCompleter(%22exit%22, CommandLineInterpreter.BOARD_ARG_NAME));%0D%0A%0D%0A%0D%0A%09%09final CommandLineInterpreter clInterpreter = new CommandLineInterpreter();%0D%0A%09%09String line;%0D%0A%0D%0A%09%09while ((line = reader.readLine()) != null) %7B%0D%0A%09%09%09final String trimmedLine = line.trim();%0D%0A%09%09%09if (trimmedLine.isEmpty()) %7B%0D%0A%09%09%09%09continue;%0D%0A%09%09%09%7D else if (trimmedLine.equalsIgnoreCase(%22exit%22)) %7B%0D%0A%09%09%09%09break;%0D%0A%09%09%09%7D  else if (trimmedLine.equalsIgnoreCase(%22gc%22)) %7B%0D%0A%09%09%09%09System.gc();%0D%0A%09%09%09%7D else %7B%0D%0A%09%09%09%09final String%5B%5D splitLine = line.split(%22%5C%5Cs+%22);%0D%0A%09%09%09%09try %7B%0D%0A%09%09%09%09%09clInterpreter.interpretArguments(splitLine);%0D%0A%09%09%09%09%7D catch (final InvalidArgumentsException e) %7B%0D%0A%09%09%09%09%09e.printStackTrace();%0D%0A%09%09%09%09%7D%0D%0A%09%09%09%7D%0D%0A%09%09%7D%0D%0A%0D%0A%09%09reader.flush();%0D%0A%0D%0A%09%7D%0D%0A%0D%0A%7D%0D%0A

Add a first version of a JLine interpreter