@Override
          public void onLine(String line) {
            synchronized (Interactive.this) {
              if (command == null) {
                return;
              }

              String contentPart = line;
              String markerPart = null;

              int markerIndex = line.indexOf(command.marker);
              if (markerIndex == 0) {
                contentPart = null;
                markerPart = line;
              } else if (markerIndex > 0) {
                contentPart = line.substring(0, markerIndex);
                markerPart = line.substring(markerIndex);
              }

              if (contentPart != null) {
                addBuffer(contentPart);
                processLine(contentPart, onStdoutLineListener);
                processLine(contentPart, command.onCommandLineListener);
              }

              if (markerPart != null) {
                try {
                  lastExitCode = Integer.valueOf(markerPart.substring(command.marker.length() + 1), 10);
                } catch (Exception e) {
                  // this really shouldn't happen
                  e.printStackTrace();
                }
                lastMarkerStdout = command.marker;
                processMarker();
              }
            }
          }
Internal call that launches the shell, starts gobbling, and starts executing commands. See
{@link Shell.Interactive}

@return Opened successfully ?
imitate/src/main/java/com/engineer/imitate/shell/Shell.java