PsiBuilder.Marker marker = builder.mark(null);
ParseResult result = super.parse(parentNode, optional, depth, context);
if (result.getType() == ParseResultType.NO_MATCH) {
builder.markerDrop(marker);
} else {
builder.markerDone(marker, getElementType());
}
return result.getType() == ParseResultType.NO_MATCH ?
ParseResult.createNoMatchResult() :
ParseResult.createFullMatchResult(result.getMatchedTokens());
}