protected boolean parsePredicate(PsiBuilder builder) {
    final PsiBuilder.Marker marker = builder.mark();
    if (builder.getTokenType() != XPathTokenTypes.LBRACKET) {
      marker.drop();
      return false;
    }
    builder.advanceLexer();
    if (!parseExpr(builder)) {
      builder.error(XPathBundle.message("parsing.error.expression.expected"));
    }
    checkMatches(builder, XPathTokenTypes.RBRACKET, XPathBundle.message("parsing.error.closing.bracket.expected"));
    marker.done(XPathElementTypes.PREDICATE);
    return true;
  }
protected boolean parsePredicate(PsiBuilder builder)