@Override
    public void read(DataInput stream) throws IOException {
      if (myStartOffset != null) {
        long offset = myStartOffset.getValue();
        long streamOffset = StreamUtil.getOffset(stream);
        if (streamOffset != offset) {
          if (offset > streamOffset) {
            //noinspection UseOfSystemOutOrSystemErr
            System.err.printf("WARN: non-continuous read: reading offset %#x, current stream offset %#x %n", offset, streamOffset);
          } else {
            //noinspection UseOfSystemOutOrSystemErr
            System.err.printf("WARN: out of order read: reading offset %#x, current stream offset %#x %n", offset, streamOffset);
          }
          StreamUtil.seek(stream, offset);
        }
      }
      myBytes = new byte[(int) mySize.getValue()];
      stream.readFully(myBytes);
    }
@Override
    public void read(DataInput stream)