protected boolean parseInstanceofExpr(PsiBuilder builder) {
    PsiBuilder.Marker expr = builder.mark();
    if (!parseTreatExpr(builder)) {
      expr.drop();
      return false;
    }

    if (builder.getTokenType() == XPath2TokenTypes.INSTANCE) {
      builder.advanceLexer();
      checkMatches(builder, XPath2TokenTypes.OF, XPathBundle.message("parsing.error.of.expected"));
      if (!parseSequenceType(builder)) {
        builder.error(XPathBundle.message("parsing.error.sequence.type.expected"));
      }
      expr.done(XPath2ElementTypes.INSTANCE_OF);
    } else {
      expr.drop();
    }

    return true;
  }
protected boolean parseInstanceofExpr(PsiBuilder builder)