parseEndTag(tagName, tag, nextTag) {
    let checkTag = this.mod() === tagName;
    if (tagName === "mono") {
      // special handling for 'mono'
      checkTag = checkTag && this.mono;
    } else {
      checkTag = checkTag && !this.mono;
    }

    if (checkTag && this.match(tag)) {
      if (nextTag !== undefined) {
        // Purpose of the following match is to prevent a direct unset/set of a given tag
        // E.g. '*bold **still bold*' => '*bold still bold*'
        if (
          this.position === this.text.length - 1 ||
          this.match(nextTag, false)
        ) {
          this.unsetTag(tagName);
        }
      } else {
        this.unsetTag(tagName);
      }

      return true;
    }

    return false;
  }
@param {string} tagName label for block type we are currently processing
@param {string|RegExp} tag string to match in text
@param {RegExp} [nextTag] regular expression to match for characters *following* the current tag
@returns {boolean} true if the tag was processed, false otherwise