code: function startTagInSelect(p, token) {
      var tn = token.tagName;
  
      if (tn === $.HTML)
          startTagInBody(p, token);
  
      else if (tn === $.OPTION) {
          if (p.openElements.currentTagName === $.OPTION)
              p._processFakeEndTag($.OPTION);
  
          p._insertElement(token, NS.HTML);
      }
  
      else if (tn === $.OPTGROUP) {
          if (p.openElements.currentTagName === $.OPTION)
              p._processFakeEndTag($.OPTION);
  
          if (p.openElements.currentTagName === $.OPTGROUP)
              p._processFakeEndTag($.OPTGROUP);
  
          p._insertElement(token, NS.HTML);
      }
  
      else if (tn === $.SELECT)
          p._processFakeEndTag($.SELECT);
  
      else if (tn === $.INPUT || tn === $.KEYGEN || tn === $.TEXTAREA) {
          if (p.openElements.hasInSelectScope($.SELECT)) {
              p._processFakeEndTag($.SELECT);
              p._processToken(token);
          }
      }
  
      else if (tn === $.SCRIPT || tn === $.TEMPLATE)
          startTagInHead(p, token);
  }
docs: 12.2.5.4.16 The "in select" insertion mode ------------------------------------------------------------------