boolean (PsiBuilder builder) { PsiBuilder.Marker mark = builder.mark(); final IElementType type = parseItemOrEmptySequenceType(builder); if (type != null) { if (type == XPath2TokenTypes.ITEM) { if (XPath2TokenTypes.OCCURRENCE_OPS.contains(builder.getTokenType())) { makeToken(builder); } } mark.done(XPath2ElementTypes.SEQUENCE_TYPE); return true; } else if (parseNodeType(builder) || parseQName(builder)) { if (builder.getTokenType() == XPathTokenTypes.MULT) { builder.remapCurrentToken(XPathTokenTypes.STAR); } if (XPath2TokenTypes.OCCURRENCE_OPS.contains(builder.getTokenType())) { makeToken(builder); } mark.done(XPath2ElementTypes.SEQUENCE_TYPE); return true; } mark.drop(); return false; }