docs: @Override
      public void readBytes(final ByteBuffer bb) throws IOException
      {
          final int size = readRawVarint32();
  
          if (size <= (bufferSize - bufferPos) && size > 0)
          {
              // Fast path: We already have the bytes in a contiguous buffer, so
              // just copy directly from it.
              bb.limit(size);
              bb.put(buffer, bufferPos, size);
              bufferPos += size;
          }
          else
          {
              // Slow path: Build a byte array first then copy it.
              bb.put(readRawBytes(size));
          }
      }