docs: private void _emitXMLLines (final MarkdownHCStack aOut, final Line aLines)
    {
      Line aLine = aLines;
      if (m_aConfig.isSafeMode ())
      {
        final StringBuilder aTmpSB = new StringBuilder ();
        while (aLine != null)
        {
          if (!aLine.m_bIsEmpty)
            aTmpSB.append (aLine.m_sValue.trim ());
          aLine = aLine.m_aNext;
        }
        final String sIn = aTmpSB.toString ();
        for (int nPos = 0; nPos < sIn.length (); nPos++)
        {
          if (sIn.charAt (nPos) == '<')
          {
            aTmpSB.setLength (0);
            final int nNewPos = MarkdownHelper.readXMLElement (aTmpSB, sIn, nPos, m_aConfig.isSafeMode ());
            if (nNewPos != -1)
            {
              // XXX Is this correct???
              aOut.append (aTmpSB.toString ());
              nPos = nNewPos;
            }
            else
            {
              aOut.append (sIn.charAt (nPos));
            }
          }
          else
          {
            aOut.append (sIn.charAt (nPos));
          }
        }
      }
      else
      {
        final StringBuilder aXML = new StringBuilder ();
        int nLines = 0;
        while (aLine != null)
        {
          if (!aLine.m_bIsEmpty)
          {
            aXML.append (aLine.m_sValue.trim ());
            ++nLines;
          }
          aLine = aLine.m_aNext;
        }
  
        String sXML = aXML.toString ();
        if (nLines == 1 && !sXML.contains ("/>") && !sXML.contains ("</"))
        {
          // Unclosed tag - parse as self-closed tag and push to stack
          // Workaround e.g. for <hr>
          sXML = sXML.substring (0, sXML.length () - 1) + "/>";
        }
  
        final IMicroDocument aDoc = MicroReader.readMicroXML (sXML);
        if (aDoc == null)
          throw new MarkdownException ("Failed to parse XML: " + sXML);
  
        aOut.append (new HCDOMWrapper (aDoc.getDocumentElement ().detachFromParent ()));
      }
    }