public static Type typeOf(Executable executable, int parameterIndex) {
Type[] genericParameterTypes = executable.getGenericParameterTypes();
if ( parameterIndex >= genericParameterTypes.length ) {
genericParameterTypes = executable.getParameterTypes();
}
Type type = genericParameterTypes[parameterIndex];
if ( type instanceof TypeVariable ) {
type = TypeHelper.getErasedType( type );
}
return type;
}