void (@NotNull PsiBuilder builder, @NotNull PsiBuilder.Marker refStart, @NotNull AbstractBasicJavaDocElementTypeFactory.JavaDocElementTypeContainer javaDocElementTypeContainer) { if (getTokenType(builder) == JavaDocTokenType.DOC_TAG_VALUE_SHARP_TOKEN) { builder.advanceLexer(); } if (getTokenType(builder) != JavaDocTokenType.DOC_TAG_VALUE_TOKEN) { refStart.done(javaDocElementTypeContainer.DOC_METHOD_OR_FIELD_REF); return; } builder.advanceLexer(); if (getTokenType(builder) == JavaDocTokenType.DOC_TAG_VALUE_LPAREN) { builder.advanceLexer(); PsiBuilder.Marker subValue = builder.mark(); IElementType tokenType; while (TAG_VALUES_SET.contains(tokenType = getTokenType(builder))) { if (tokenType == JavaDocTokenType.DOC_TAG_VALUE_TOKEN) { builder.remapCurrentToken(javaDocElementTypeContainer.DOC_TYPE_HOLDER); builder.advanceLexer(); while (TAG_VALUES_SET.contains(tokenType = getTokenType(builder)) && tokenType != JavaDocTokenType.DOC_TAG_VALUE_COMMA && tokenType != JavaDocTokenType.DOC_TAG_VALUE_RPAREN) { builder.advanceLexer(); } } else if (tokenType == JavaDocTokenType.DOC_TAG_VALUE_RPAREN) { subValue.done(javaDocElementTypeContainer.DOC_TAG_VALUE_ELEMENT); builder.advanceLexer(); refStart.done(javaDocElementTypeContainer.DOC_METHOD_OR_FIELD_REF); return; } else { builder.advanceLexer(); } } subValue.done(javaDocElementTypeContainer.DOC_TAG_VALUE_ELEMENT); } refStart.done(javaDocElementTypeContainer.DOC_METHOD_OR_FIELD_REF); }