code: protected DCTree inlineTag() {
          int p = bp - 1;
          try {
              nextChar();
              if (isIdentifierStart(ch)) {
                  Name name = readTagName();
                  skipWhitespace();
  
                  TagParser tp = tagParsers.get(name);
                  if (tp == null) {
                      DCTree text = inlineText();
                      if (text != null) {
                          nextChar();
                          return m.at(p).UnknownInlineTag(name, List.of(text)).setEndPos(bp);
                      }
                  } else if (tp.getKind() == TagParser.Kind.INLINE) {
                      DCEndPosTree<?> tree = (DCEndPosTree<?>) tp.parse(p);
                      if (tree != null) {
                          return tree.setEndPos(bp);
                      }
                  } else {
                      inlineText(); // skip content
                      nextChar();
                  }
              }
              return erroneous("dc.no.tag.name", p);
          } catch (ParseException e) {
              return erroneous(e.getMessage(), p);
          }
      }
docs: Read a single inline tag, including its content.
  Standard tags parse their content appropriately.
  Non-standard tags are represented by {@link UnknownBlockTag}.
  Malformed tags may be returned as {@link Erroneous}.