void (@NotNull CompletionResultSet result, @NotNull PsiElement position, @NotNull PsiAnnotation anno, @NotNull PsiClass annoClass) { PsiNameValuePair[] existingPairs = anno.getParameterList().getAttributes(); methods: for (PsiMethod method : annoClass.getMethods()) { if (!(method instanceof PsiAnnotationMethod)) continue; String attrName = method.getName(); for (PsiNameValuePair existingAttr : existingPairs) { if (PsiTreeUtil.isAncestor(existingAttr, position, false)) break; if (Objects.equals(existingAttr.getName(), attrName) || PsiAnnotation.DEFAULT_REFERENCED_METHOD_NAME.equals(attrName) && existingAttr.getName() == null) continue methods; } PsiAnnotationMemberValue defaultValue = ((PsiAnnotationMethod)method).getDefaultValue(); String defText = defaultValue == null ? null : defaultValue.getText(); if (PsiKeyword.TRUE.equals(defText) || PsiKeyword.FALSE.equals(defText)) { result.addElement(createAnnotationAttributeElement(method, PsiKeyword.TRUE.equals(defText) ? PsiKeyword.FALSE : PsiKeyword.TRUE, position)); result.addElement(PrioritizedLookupElement.withPriority(createAnnotationAttributeElement(method, defText, position) .withTailText(" (default)", true), -1)); } else { LookupElementBuilder element = createAnnotationAttributeElement(method, null, position); if (defText != null) { element = element.withTailText(" default " + defText, true); } result.addElement(element); } } }