docs: public String readHeaders () throws MultipartMalformedStreamException
    {
      // to support multi-byte characters
      try (final NonBlockingByteArrayOutputStream aBAOS = new NonBlockingByteArrayOutputStream ())
      {
        int nHeaderSepIndex = 0;
        int nSize = 0;
        while (nHeaderSepIndex < HEADER_SEPARATOR.length)
        {
          byte b;
          try
          {
            b = readByte ();
          }
          catch (final IOException e)
          {
            throw new MultipartMalformedStreamException ("Stream ended unexpectedly after " + nSize + " bytes", e);
          }
          if (++nSize > HEADER_PART_SIZE_MAX)
          {
            throw new MultipartMalformedStreamException ("Header section has more than " +
                                                         HEADER_PART_SIZE_MAX +
                                                         " bytes (maybe it is not properly terminated)");
          }
          if (b == HEADER_SEPARATOR[nHeaderSepIndex])
            nHeaderSepIndex++;
          else
            nHeaderSepIndex = 0;
          aBAOS.write (b);
        }
  
        final Charset aCharsetToUse = CharsetHelper.getCharsetFromNameOrDefault (m_sHeaderEncoding,
                                                                                 SystemHelper.getSystemCharset ());
        return aBAOS.getAsString (aCharsetToUse);
      }
    }