/**
  * Unfortunately, the Eclipse compiler wraps System.out into a BufferedWriter.
  *
  * <p>So we get whole buffers here and cannot do anything about it.
  *
  * <p>{@inheritDoc}
  */
 public void write(byte[] buf, int off, int len) {
   super.write(buf, off, len);
   // we cannot convert back to string because the buffer might start
   // _inside_ a multibyte character
   // so we build a simple parser.
   int _fileno = this.parser.parse(buf, off, len);
   if (_fileno > -1) {
     this.listener.setSubStepNo(this.parser.getJobSize());
     this.listener.progress(_fileno, this.parser.getLastFilename());
   }
 }
 /**
  * Unfortunately, the Eclipse compiler wraps System.out into a BufferedWriter.
  *
  * <p>So we get whole buffers here and cannot do anything about it.
  *
  * <p>{@inheritDoc}
  */
 public void write(byte[] buf, int off, int len) {
   super.write(buf, off, len);
   // we cannot convert back to string because the buffer might start
   // _inside_ a multibyte character
   // so we build a simple parser.
   int _errno = this.parser.parse(buf, off, len);
   if (_errno > 0) {
     // TODO: emit error message instantly, but it may be incomplete yet
     // and we'd need to throw an exception to abort compilation
     this.errorCount += _errno;
   }
 }