docs: private static <E, T, X extends RuntimeException> List<E> convertBeans(List<T> source, Class<E> targetClass,
              Supplier<X> exceptionSupplier, boolean parallelConvert, boolean nonNullFilter) {
          Objects.requireNonNull(targetClass, "TargetClass can not be null");
          if (Objects.isNull(source)) {
              return SupplierUtil.ifNonNullThrowOrElse(exceptionSupplier, Collections::emptyList);
          }
          // 若异常提供者不为NULL，则先校验是否存在NULL对象，存在则抛出异常
          if (Objects.nonNull(exceptionSupplier)) {
              Stream<T> stream = parallelConvert ? source.parallelStream() : source.stream();
              boolean hasNullObj = stream.anyMatch(Objects::isNull);
              if (hasNullObj) {
                  throw exceptionSupplier.get();
              }
          }
          // 一次性获取，避免每次转换都要查找导致的额外消耗
          Optional<T> sourceElement = source.stream().filter(Objects::nonNull).findAny();
          if (!sourceElement.isPresent()) {
              return Collections.emptyList();
          }
          Handler handler = ConverterContext.getActionHandler(sourceElement.get().getClass(), targetClass);
          log.info("Call method \"{}\"", handler.getMethod());
  
          Stream<T> stream = parallelConvert ? source.parallelStream() : source.stream();
          if (nonNullFilter) {
              stream = stream.filter(Objects::nonNull);
          }
          return stream.map(convertedObj -> convertBean(convertedObj, targetClass, handler)).collect(Collectors.toList());
      }