docs: @Nonnull
    public MarkdownProcessingResult process (@Nonnull @WillClose final Reader aReader) throws IOException
    {
      try
      {
        final Block aParent = _readLines (aReader);
        aParent.removeSurroundingEmptyLines ();
        _recurse (aParent, false);
  
        final MarkdownHCStack aOut = new MarkdownHCStack ();
        Block aBlock = aParent.m_aBlocks;
        while (aBlock != null)
        {
          m_aEmitter.emit (aOut, aBlock);
          aBlock = aBlock.m_aNext;
        }
        return new MarkdownProcessingResult (aOut);
      }
      finally
      {
        StreamHelper.close (aReader);
      }
    }