void (@NotNull PsiMethodCallExpression callExpression, boolean isDeclared, @NotNull ProblemsHolder holder) { final PsiExpression[] arguments = callExpression.getArgumentList().getExpressions(); if (arguments.length != 0) { final PsiExpression nameExpression = arguments[0]; final String fieldName = getMemberName(nameExpression); if (fieldName != null) { final ReflectiveClass ownerClass = getOwnerClass(callExpression); if (ownerClass != null && ownerClass.isExact()) { final PsiField field = ownerClass.getPsiClass().findFieldByName(fieldName, true); if (field == null) { if (reportUnresolvedMembersOf(ownerClass)) { holder.registerProblem(nameExpression, JavaBundle.message( "inspection.reflection.member.access.cannot.resolve.field", fieldName)); } return; } if (isDeclared && field.getContainingClass() != ownerClass.getPsiClass()) { LocalQuickFix fix = field.hasModifierProperty(PsiModifier.PUBLIC) ? new UseAppropriateMethodFix("getField") : null; holder.registerProblem(nameExpression, JavaBundle.message( "inspection.reflection.member.access.field.not.in.class", fieldName, ownerClass.getPsiClass().getQualifiedName()), LocalQuickFix.notNullElements(fix)); return; } if (!isDeclared && !field.hasModifierProperty(PsiModifier.PUBLIC)) { holder.registerProblem(nameExpression, JavaBundle.message( "inspection.reflection.member.access.field.not.public", fieldName), new UseAppropriateMethodFix("getDeclaredField")); } } } } }