docs: public static Class getMethodGenericReturnType(Method method, int index) {
      	Type returnType = method.getGenericReturnType();
      	if(returnType instanceof ParameterizedType){
      	    ParameterizedType type = (ParameterizedType) returnType;
      	    Type[] typeArguments = type.getActualTypeArguments();
              if (index >= typeArguments.length || index < 0) {
  				throw new IllegalArgumentException("index "+ (index<0 ? " must > 0 " : " over total arguments"));
  			}
      	    return (Class)typeArguments[index];
      	}
      	return Object.class;
      }