Просто быстрый вопрос о том, как параметры передаются в Java...
...
            if ((index = stdout.indexOf(pattern)) != -1) {
                tidy(stdout, index + pattern.length());
                return true;
            } else if ((index = stderr.indexOf(pattern)) != -1) {
                tidy(stderr, index + pattern.length());
                return true;
...
    private void tidy(StringBuffer buffer, int i) {
        logger.info("Truncating buffer: " + buffer);
        buffer = new StringBuffer(buffer.substring(i));
        logger.info("Buffer now: " + buffer);
    }
В этом случае stdout и stderr (используемые в качестве параметров в tidy()) имеют свои значения, измененные на новый StringBuffer (buffer.substring(i))? Мое предположение заключается в том, что они будут, поскольку объектные переменные (указатели объектов) всегда передаются по значению?
