code: private List<String> parseSelector() {
          List<String> selector = new ArrayList<>();
          parseSelectorPrefix(selector);
  
          while (tokenizer.more()) {
              if (tokenizer.current().isSymbol("{", ",")) {
                  if (selector.isEmpty()) {
                      tokenizer.addError(tokenizer.current(), "Unexpected end of CSS selector");
                  }
  
                  return selector;
              } else if (tokenizer.current().isIdentifier()
                         || tokenizer.current().isSpecialIdentifier("#", "@")
                         || tokenizer.current().isNumber()) {
                  StringBuilder sb = new StringBuilder(tokenizer.consume().getSource());
                  parseFilterInSelector(sb);
                  parseOperatorInSelector(sb);
                  selector.add(sb.toString());
              } else if (tokenizer.current().isSymbol("&") || tokenizer.current().isSymbol("*")) {
                  selector.add(tokenizer.consume().getTrigger());
              } else if (tokenizer.current().isSymbol(">", "+", "~")) {
                  selector.add(tokenizer.consume().getSource());
              } else {
                  tokenizer.addError(tokenizer.current(), "Unexpected Token: %s", tokenizer.consume().getSource());
              }
          }
          return selector;
      }
docs: /*
  CSS and therefore also SASS supports a wide range or complex selector strings. The following method
  parses such selectors while performing basic consistency checks