void (PsiMethodCallExpression factoryCallExpression, ProblemsHolder holder) { final PsiExpressionList argumentList = factoryCallExpression.getArgumentList(); final PsiExpression[] arguments = argumentList.getExpressions(); if (arguments.length != 1) { holder.registerProblem(argumentList, JavaBundle.message("inspection.reflection.invocation.argument.count", 1)); return; } final ReflectiveType argumentType = getReflectiveType(arguments[0]); if (argumentType == null || argumentType.getType() instanceof PsiArrayType) { return; } if (!argumentType.isPrimitive() && !argumentType.isExact()) { final String name = argumentType.getQualifiedName(); if (JAVA_LANG_OBJECT.equals(name) || "java.io.Serializable".equals(name) || "java.lang.Cloneable".equals(name)) { return; } } holder.registerProblem(arguments[0], JavaBundle.message("inspection.reflect.handle.invocation.argument.not.array")); }