@Override
  protected boolean parsePathExpression(PsiBuilder builder) {
    final PsiBuilder.Marker marker = builder.mark();
    if (builder.getTokenType() == XPathTokenTypes.PATH) {
      builder.advanceLexer();
      parseRelativePathExpr(builder, false);
      marker.done(XPathElementTypes.LOCATION_PATH);
      return true;
    } else if (builder.getTokenType() == XPathTokenTypes.ANY_PATH) {
      builder.advanceLexer();
      if (!parseRelativePathExpr(builder, false)) {
        builder.error(XPathBundle.message("parsing.error.relative.path.expected"));
      }
      marker.done(XPathElementTypes.LOCATION_PATH);
      return true;
    } else {
      marker.drop();
      return parseRelativePathExpr(builder, true);
    }
  }
@Override
  protected boolean parsePathExpression(PsiBuilder builder)