docs: private int _checkInlineLink (final MarkdownHCStack aOut, final String sIn, final int nStart, final EMarkToken eToken)
    {
      boolean bIsAbbrev = false;
      int nPos = nStart + (eToken == EMarkToken.LINK ? 1 : 2);
      final StringBuilder aTmp = new StringBuilder ();
  
      aTmp.setLength (0);
      nPos = MarkdownHelper.readMdLinkId (aTmp, sIn, nPos);
      if (nPos < nStart)
        return -1;
  
      final String sName = aTmp.toString ();
      String sLink = null;
      String sComment = null;
      final int nOldPos = nPos++;
      nPos = MarkdownHelper.skipSpaces (sIn, nPos);
      if (nPos < nStart)
      {
        final LinkRef aLR = m_aLinkRefs.get (sName.toLowerCase (Locale.US));
        if (aLR == null)
          return -1;
        bIsAbbrev = aLR.isAbbrev ();
        sLink = aLR.getLink ();
        sComment = aLR.getTitle ();
        nPos = nOldPos;
      }
      else
        if (sIn.charAt (nPos) == '(')
        {
          nPos++;
          nPos = MarkdownHelper.skipSpaces (sIn, nPos);
          if (nPos < nStart)
            return -1;
          aTmp.setLength (0);
          final boolean bUseLt = sIn.charAt (nPos) == '<';
          nPos = bUseLt ? MarkdownHelper.readUntil (aTmp, sIn, nPos + 1, '>')
                        : MarkdownHelper.readMdLink (aTmp, sIn, nPos);
          if (nPos < nStart)
            return -1;
          if (bUseLt)
            nPos++;
          sLink = aTmp.toString ();
  
          if (sIn.charAt (nPos) == ' ')
          {
            nPos = MarkdownHelper.skipSpaces (sIn, nPos);
            if (nPos > nStart && sIn.charAt (nPos) == '"')
            {
              nPos++;
              aTmp.setLength (0);
              nPos = MarkdownHelper.readUntil (aTmp, sIn, nPos, '"');
              if (nPos < nStart)
                return -1;
              sComment = aTmp.toString ();
              nPos++;
              nPos = MarkdownHelper.skipSpaces (sIn, nPos);
              if (nPos == -1)
                return -1;
            }
          }
          if (sIn.charAt (nPos) != ')')
            return -1;
        }
        else
          if (sIn.charAt (nPos) == '[')
          {
            nPos++;
            aTmp.setLength (0);
            nPos = MarkdownHelper.readRawUntil (aTmp, sIn, nPos, ']');
            if (nPos < nStart)
              return -1;
            final String sID = aTmp.length () > 0 ? aTmp.toString () : sName;
            final LinkRef aLR = m_aLinkRefs.get (sID.toLowerCase (Locale.US));
            if (aLR != null)
            {
              sLink = aLR.getLink ();
              sComment = aLR.getTitle ();
            }
          }
          else
          {
            final LinkRef aLR = m_aLinkRefs.get (sName.toLowerCase (Locale.US));
            if (aLR == null)
              return -1;
            bIsAbbrev = aLR.isAbbrev ();
            sLink = aLR.getLink ();
            sComment = aLR.getTitle ();
            nPos = nOldPos;
          }
  
      if (sLink == null)
        return -1;
  
      if (eToken == EMarkToken.LINK)
      {
        if (bIsAbbrev && sComment != null)
        {
          if (!m_bUseExtensions)
            return -1;
          aOut.push (new HCAbbr ().setTitle (sComment));
          _recursiveEmitLine (aOut, sName, 0, EMarkToken.NONE);
          aOut.pop ();
        }
        else
        {
          final HCA aLink = m_aConfig.getDecorator ().openLink (aOut);
          aLink.setHref (new SimpleURL (sLink));
          if (sComment != null)
            aLink.setTitle (sComment);
          _recursiveEmitLine (aOut, sName, 0, EMarkToken.NONE);
          m_aConfig.getDecorator ().closeLink (aOut);
        }
      }
      else
      {
        final HCImg aImg = m_aConfig.getDecorator ().appendImage (aOut);
        aImg.setSrc (new SimpleURL (sLink));
        aImg.setAlt (sName);
        if (sComment != null)
          aImg.setTitle (sComment);
      }
  
      return nPos;
    }