@Override
  protected boolean parseUnaryExpression(PsiBuilder builder) {
    if (XPathTokenTypes.ADD_OPS.contains(builder.getTokenType())) {
      PsiBuilder.Marker expr = builder.mark();
      do {
        builder.advanceLexer();

        if (!parseUnaryExpression(builder)) {
          builder.error(XPathBundle.message("parsing.error.expression.expected"));
        }
        expr.done(XPathElementTypes.PREFIX_EXPRESSION);
        expr = expr.precede();
      } while (XPathTokenTypes.ADD_OPS.contains(builder.getTokenType()));
      expr.drop();
      return true;
    }
    return parseValueExpression(builder);
  }
@Override
  protected boolean parseUnaryExpression(PsiBuilder builder)