code: function parse(str, off, nested, hints) {
          if (!nested) hints = {};
  
          var a = [], am, readParen;
          if (!off) off = 0;
  
          while (true) {
              var s = parse_selector(str, off, hints);
              a.push(s[1]);
              s = lex(str, off = s[0]);
              if (s && s[1] === " ") s = lex(str, off = s[0]);
              if (!s) break;
              // now we've parsed a selector, and have something else...
              if (s[1] === ">" || s[1] === "~") {
                  if (s[1] === "~") hints.usesSiblingOp = true;
                  a.push(s[1]);
                  off = s[0];
              } else if (s[1] === ",") {
                  if (am === undefined) am = [ ",", a ];
                  else am.push(a);
                  a = [];
                  off = s[0];
              } else if (s[1] === ")") {
                  if (!nested) te("ucp", s[1]);
                  readParen = 1;
                  off = s[0];
                  break;
              }
          }
          if (nested && !readParen) te("mcp", str);
          if (am) am.push(a);
          var rv;
          if (!nested && hints.usesSiblingOp) {
              rv = normalize(am ? am : a);
          } else {
              rv = am ? am : a;
          }
          return [off, rv];
      }
docs: THE PARSER