private boolean parseSequenceType(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;
  }
private boolean parseSequenceType(PsiBuilder builder)