docs: @SuppressWarnings({"unchecked", "rawtypes"}) // appears to be unsound
      @Override
      protected void eol(byte[] in, int sz) throws IOException {
          line.reset();
          final StringBuffer strBuf = line.getStringBuffer();
  
          int next = ConsoleNote.findPreamble(in,0,sz);
  
          List<ConsoleAnnotator<T>> annotators=null;
  
          {// perform byte[]->char[] while figuring out the char positions of the BLOBs
              int written = 0;
              while (next>=0) {
                  if (next>written) {
                      lineOut.write(in,written,next-written);
                      lineOut.flush();
                      written = next;
                  } else {
                      assert next==written;
                  }
  
                  // character position of this annotation in this line
                  final int charPos = strBuf.length();
  
                  int rest = sz - next;
                  ByteArrayInputStream b = new ByteArrayInputStream(in, next, rest);
  
                  try {
                      final ConsoleNote a = ConsoleNote.readFrom(new DataInputStream(b));
                      if (a!=null) {
                          if (annotators==null)
                              annotators = new ArrayList<>();
                          annotators.add(new ConsoleAnnotator<T>() {
                              @Override
                              public ConsoleAnnotator<T> annotate(T context, MarkupText text) {
                                  return a.annotate(context,text,charPos);
                              }
                          });
                      }
                  } catch (IOException | ClassNotFoundException e) {
                      // if we failed to resurrect an annotation, ignore it.
                      LOGGER.log(Level.FINE, "Failed to resurrect annotation from \"" + StringEscapeUtils.escapeJava(new String(in, next, rest)) + "\"", e);
                  }
  
                  int bytesUsed = rest - b.available(); // bytes consumed by annotations
                  written += bytesUsed;
  
  
                  next = ConsoleNote.findPreamble(in,written,sz-written);
              }
              // finish the remaining bytes->chars conversion
              lineOut.write(in,written,sz-written);
  
              if (annotators!=null) {
                  // aggregate newly retrieved ConsoleAnnotators into the current one.
                  if (ann!=null)      annotators.add(ann);
                  ann = ConsoleAnnotator.combine(annotators);
              }
          }
  
          lineOut.flush();
          MarkupText mt = new MarkupText(strBuf.toString());
          if (ann!=null)
              ann = ann.annotate(context,mt);
          out.write(mt.toString(true)); // this perform escapes
      }