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

    if (builder.getTokenType() == XPath2TokenTypes.CAST) {
      builder.advanceLexer();

      checkMatches(builder, XPath2TokenTypes.AS, XPathBundle.message("parsing.error.as.expected"));
      parseSingleType(builder);
      expr.done(XPath2ElementTypes.CAST_AS);
    } else {
      expr.drop();
    }

    return true;
  }
protected boolean parseCastExpr(PsiBuilder builder)