docs: public static Class getFieldGenericType(Field field, int index) {
      	Type genericFieldType = field.getGenericType();
      	
      	if(genericFieldType instanceof ParameterizedType){
      	    ParameterizedType aType = (ParameterizedType) genericFieldType;
      	    Type[] fieldArgTypes = aType.getActualTypeArguments();
      	    if (index >= fieldArgTypes.length || index < 0) {
  				throw new IllegalArgumentException("index "+ (index<0 ? " must > 0 " : " over total arguments"));
  			}
      	    return (Class)fieldArgTypes[index];
      	}
      	return Object.class;
      }