docs: public void waitForBuffer(long timeoutMilli) {
          //assert(callerProcessing.booleanValue() == false);
  
          synchronized(buffer) {
              if( dirtyBuffer )
                  return;
              if( !foundEOF() ) {
                  logger.trace("Waiting for things to come in, or until timeout");
                  try {
                      if( timeoutMilli > 0 )
                          buffer.wait(timeoutMilli);
                      else
                          buffer.wait();
                  } catch(InterruptedException ie) {
                      logger.trace("Woken up, while waiting for buffer");
                  }
                  // this might went early, but running the processing again isn't a big deal
                  logger.trace("Waited");
              }
          }
      }