boolean (PsiBuilder builder) { int count = 0; while (true) { final IElementType token = builder.getTokenType(); if (token == RegExpTT.CLASS_BEGIN) { parseClass(builder); } else if (token == RegExpTT.BRACKET_EXPRESSION_BEGIN) { parseBracketExpression(builder); } else if (token == RegExpTT.MYSQL_CHAR_BEGIN) { parseMysqlCharExpression(builder); } else if (token == RegExpTT.MYSQL_CHAR_EQ_BEGIN) { parseMysqlCharEqExpression(builder); } else if (RegExpTT.CHARACTERS.contains(token) || token == RegExpTT.NAMED_CHARACTER) { parseCharacterRange(builder); } else if (token == RegExpTT.CHAR_CLASS) { final PsiBuilder.Marker m = builder.mark(); builder.advanceLexer(); m.done(RegExpElementTypes.SIMPLE_CLASS); } else if (token == RegExpTT.PROPERTY) { parseProperty(builder); } else { return count > 0; } count++; } }