docs: private void checkListMapType(Field field) {
          Class<?> cls = field.getType();
          boolean needCheckGenericType = false;
          if (List.class.isAssignableFrom(cls)) {
              // if check is list ignore check
              isList = true;
              needCheckGenericType = true;
          }
          if (Map.class.isAssignableFrom(cls)) {
              // if check is list ignore check
              isMap = true;
              needCheckGenericType = true;
          }
  
          if (!needCheckGenericType) {
              return;
          }
  
          Type type = field.getGenericType();
          if (type instanceof ParameterizedType) {
              ParameterizedType ptype = (ParameterizedType) type;
  
              Type[] actualTypeArguments = ptype.getActualTypeArguments();
  
              if (actualTypeArguments != null) {
  
                  int length = actualTypeArguments.length;
                  // validate
                  if (isList) {
                      if (length != 1) {
                          throw new RuntimeException(
                                  "List must use generic definiation like List<String>, please check  field name '"
                                          + field.getName() + " at class " + field.getDeclaringClass().getName());
                      }
                  } else if (isMap) {
                      if (length != 2) {
                          throw new RuntimeException(
                                  "Map must use generic definiation like Map<String, String>, please check  field name '"
                                          + field.getName() + " at class " + field.getDeclaringClass().getName());
                      }
                  }
  
                  Type targetType = actualTypeArguments[0];
                  if (targetType instanceof Class) {
                      genericKeyType = (Class) targetType;
                  }
  
                  if (actualTypeArguments.length > 1) {
                      targetType = actualTypeArguments[1];
                      if (targetType instanceof Class) {
                          genericeValueType = (Class) targetType;
                      }
                  }
  
              }
          }
  
      }