Collection<PsiField> (@NotNull PsiClass psiClass) { Collection<PsiField> allNotInitializedNotStaticFields = new ArrayList<>(); final boolean classAnnotatedWithValue = PsiAnnotationSearchUtil.isAnnotatedWith(psiClass, LombokClassNames.VALUE); Collection<PsiField> fields = psiClass.isRecord() ? RecordAugmentProvider.getFieldAugments(psiClass) : PsiClassUtil.collectClassFieldsIntern(psiClass); for (PsiField psiField : fields) { // skip fields named $ boolean addField = !psiField.getName().startsWith(LombokUtils.LOMBOK_INTERN_FIELD_MARKER); final PsiModifierList modifierList = psiField.getModifierList(); if (null != modifierList) { // skip static fields addField &= !modifierList.hasModifierProperty(PsiModifier.STATIC); boolean isFinal = isFieldFinal(psiField, modifierList, classAnnotatedWithValue); // skip initialized final fields addField &= (!isFinal || !psiField.hasInitializer() || PsiAnnotationSearchUtil.findAnnotation(psiField, BUILDER_DEFAULT_ANNOTATION) != null); } if (addField) { allNotInitializedNotStaticFields.add(psiField); } } return allNotInitializedNotStaticFields; }