code: public static Type getTargetType(MethodParameter methodParam) {
  		Preconditions.checkNotNull(methodParam, "MethodParameter must not be null");
  		if (methodParam.getConstructor() != null) {
  			return methodParam.getConstructor().getGenericParameterTypes()[methodParam.getParameterIndex()];
  		}
  		else {
  			if (methodParam.getParameterIndex() >= 0) {
  				return methodParam.getMethod().getGenericParameterTypes()[methodParam.getParameterIndex()];
  			}
  			else {
  				return methodParam.getMethod().getGenericReturnType();
  			}
  		}
  	}
docs: Determine the target type for the given parameter specification.
  @param methodParam the method parameter specification
  @return the corresponding generic parameter type