private static void checkArrayElementVarHandle(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"));
  }
private static void checkArrayElementVarHandle(PsiMethodCallExpression factoryCallExpression, ProblemsHolder holder)