final PsiMethod[] classMethods = PsiClassUtil.collectClassMethodsIntern(psiClass);
final PsiType booleanType = PsiPrimitiveTypeFactory.getInstance().getBooleanType();
for (PsiField psiField : psiClass.getFields()) {
boolean createSetter = true;
PsiModifierList modifierList = psiField.getModifierList();
if (null != modifierList) {
//Skip final fields.
createSetter = !modifierList.hasModifierProperty(PsiModifier.FINAL);
//Skip static fields.
createSetter &= !modifierList.hasModifierProperty(PsiModifier.STATIC);
//Skip fields having Setter annotation already
createSetter &= !hasFieldProcessorAnnotation(modifierList);
//Skip fields that start with $
createSetter &= !psiField.getName().startsWith(LombokConstants.LOMBOK_INTERN_FIELD_MARKER);
//Skip fields if a method with same name already exists