Collection<PsiField> (@NotNull PsiClass psiClass) { final Collection<PsiField> getterFields = new ArrayList<>(); final Collection<PsiMethod> classMethods = PsiClassUtil.collectClassMethodsIntern(psiClass); filterToleratedElements(classMethods); final AccessorsInfo.AccessorsValues classAccessorsValues = AccessorsInfo.getAccessorsValues(psiClass); GetterFieldProcessor fieldProcessor = getGetterFieldProcessor(); for (PsiField psiField : psiClass.getFields()) { boolean createGetter = true; PsiModifierList modifierList = psiField.getModifierList(); if (null != modifierList) { //Skip static fields. createGetter = !modifierList.hasModifierProperty(PsiModifier.STATIC); //Skip fields having Getter annotation already createGetter &= PsiAnnotationSearchUtil.isNotAnnotatedWith(psiField, fieldProcessor.getSupportedAnnotationClasses()); //Skip fields that start with $ createGetter &= !psiField.getName().startsWith(LombokUtils.LOMBOK_INTERN_FIELD_MARKER); //Skip fields if a method with same name and arguments count already exists final AccessorsInfo accessorsInfo = AccessorsInfo.buildFor(psiField, classAccessorsValues); final Collection<String> methodNames = LombokUtils.toAllGetterNames(accessorsInfo, psiField.getName(), PsiTypes.booleanType().equals(psiField.getType())); for (String methodName : methodNames) { createGetter &= !PsiMethodUtil.hasSimilarMethod(classMethods, methodName, 0); } } if (createGetter) { getterFields.add(psiField); } } return getterFields; }