boolean (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); } }