The logic in ReflectionHelper#typeOf(Executable, int) is incorrect. Take this example: method(implicit parameter 1, parameter 2, parameter 3) When trying to get the generic type of parameter 2 with index 1, it will in fact return the type of parameter 3 as parameterIndex >= genericParameterTypes.length is false and genericParameterTypes only contains [parameter 2, parameter 3] as implicit parameters are ignored by getGenericParameterTypes(). All in all, the algorithm of ReflectionHelper#typeOf(Executable, int) always returned a result but it could be an incorrect type. This method is not used anymore so let's get rid of it. And let's implement the correct algorithm in |