ParserContext context = new ParserContext(psiBuilder, languageDialect);
ParserBuilder builder = context.getBuilder();
if (parseRootId == null ) parseRootId = defaultParseRootId;
builder.setDebugMode(SettingsUtil.isDebugEnabled);
PsiBuilder.Marker marker = builder.mark(null);
NamedElementType root = elementTypes.getNamedElementType(parseRootId);
if (root == null) {
root = elementTypes.getRootElementType();
}
boolean advancedLexer = false;
ParsePathNode rootParseNode = new ParsePathNode(root, null, 0, 0);
try {
while (!builder.eof()) {
int currentOffset = builder.getCurrentOffset();
root.getParser().parse(rootParseNode, true, 0, context);
if (currentOffset == builder.getCurrentOffset()) {
TokenType tokenType = (TokenType) builder.getTokenType();
/*if (tokenType.isChameleon()) {
PsiBuilder.Marker injectedLanguageMarker = builder.mark();
builder.advanceLexer();