void (PsiBuilder builder) { final IElementType type = builder.getTokenType(); if (RegExpTT.LOOKAROUND_GROUPS.contains(type)) { final PsiBuilder.Marker marker = builder.mark(); builder.advanceLexer(); parseGroupEnd(builder); marker.done(RegExpElementTypes.GROUP); } else { if (RegExpTT.GROUP_BEGIN == type) { IElementType lookAhead = builder.lookAhead(1); if (RegExpTT.PCRE_CONDITIONS.contains(lookAhead)) { parsePcreConditionalGroup(builder); } else { parseGroupReferenceCondition(builder, RegExpTT.GROUP_END); } } else if (RegExpTT.QUOTED_CONDITION_BEGIN == type) { parseGroupReferenceCondition(builder, RegExpTT.QUOTED_CONDITION_END); } else if (RegExpTT.ANGLE_BRACKET_CONDITION_BEGIN == type) { parseGroupReferenceCondition(builder, RegExpTT.ANGLE_BRACKET_CONDITION_END); } } }