public static <T> @NotNull Validator<T[]> arrayValidator(@NotNull Validator<? super T> validator) {
    return (data, dataId, source) -> {
      for (T element : data) {
        if (element == null) {
          T notNull = ContainerUtil.find(data, Conditions.notNull());
          Class<?> aClass = unwrap(source).getClass();
          LOG.error(PluginException.createByClass(
            "Array with null provided by " + aClass.getName() + ".getData(\"" + dataId + "\")" +
            ": " + data.getClass().getComponentType().getName() + "[" + data.length + "] " +
            "{" + (notNull == null ? null : notNull.getClass().getName()) + (data.length > 1 ? ", ..." : "") + "}", null, aClass));
          return false;
        }
        if (!validator.checkValid(element, dataId, source)) {
          return false;
        }
      }
      return true;
    };
  }
public static <T> @NotNull Validator<T[]> arrayValidator(@NotNull Validator<? super T> validator)