//pseudo-element (double colon or special cases)
//allow just one
if (hasPseudoElement) {
throw new ParserException("Only one pseudo-element is allowed for each simple selector and a second one was found at position " + pos);
}
PseudoSelector ps = pseudo(ident, PseudoType.PseudoElement, doubleColon);
simpleSelectorList.add(ps);
parserListener.pseudoSelector(ps);
sb.append(ps);
hasPseudoElement = true;
} else if ("not".equalsIgnoreCase(ident)) {
//negation
NegationSelector n = negation(selectorCount);
simpleSelectorList.add(n);
sb.append(ident);
sb.append(n);
} else {
//pseudo-class
PseudoSelector ps = pseudo(ident, PseudoType.PseudoClass, false);
simpleSelectorList.add(ps);
parserListener.pseudoSelector(ps);
sb.append(ps);
}
} else {