docs: function interpret(whole, tag, idsAndClasses, wholeAttribute, attribute, qualifier, value, wholePseudo, pseudo, wholePseudoVal, pseudoVal) {
        var i, m, k, o, classes
        if (this.nodeType !== 1) return false
        if (tag && tag !== '*' && this.tagName && this.tagName.toLowerCase() !== tag) return false
        if (idsAndClasses && (m = idsAndClasses.match(id)) && m[1] !== this.id) return false
        if (idsAndClasses && (classes = idsAndClasses.match(clas))) {
          for (i = classes.length; i--;) {
            if (!classRegex(classes[i].slice(1)).test(this.className)) return false
          }
        }
        if (pseudo && qwery.pseudos[pseudo] && !qwery.pseudos[pseudo](this, pseudoVal)) {
          return false
        }
        if (wholeAttribute && !value) { // select is just for existance of attrib
          o = this.attributes
          for (k in o) {
            if (Object.prototype.hasOwnProperty.call(o, k) && (o[k].name || k) == attribute) {
              return this
            }
          }
        }
        if (wholeAttribute && !checkAttr(qualifier, getAttr(this, attribute) || '', value)) {
          // select is for attrib equality
          return false
        }
        return this
      }