public void addCommand(@NonNull List<String> commands, int code,
                           @Nullable OnCommandLineListener lineListener) {
      addCommand(commands.toArray(new String[commands.size()]), code, lineListener);
    }
<p>Add commands to execute, with a callback. This callback gobbles the output line by line without buffering
it and also returns the result code on completion.</p>

<p>The thread on which the callback executes is dependent on various factors, see {@link Shell.Interactive}
for further details</p>

@param commands
    Commands to execute
@param code
    User-defined value passed back to the callback
@param lineListener
    Callback
imitate/src/main/java/com/engineer/imitate/shell/Shell.java