code: public static ResolvableType forMethodParameter(MethodParameter methodParameter, ResolvableType implementationType) {
  		Assert.notNull(methodParameter, "MethodParameter must not be null");
  		implementationType = (implementationType == null ? forType(methodParameter.getContainingClass()) : implementationType);
  		ResolvableType owner = implementationType.as(methodParameter.getDeclaringClass());
  		return forType(null, new MethodParameterTypeProvider(methodParameter),
  				owner.asVariableResolver()).getNested(methodParameter.getNestingLevel(),
  				methodParameter.typeIndexesPerLevel);
  	}
docs: Return a {@link ResolvableType} for the specified {@link MethodParameter} with a
  given implementation type. Use this variant when the class that declares the method
  includes generic parameter variables that are satisfied by the implementation type.
  @param methodParameter the source method parameter (must not be {@code null})
  @param implementationType the implementation type
  @return a {@link ResolvableType} for the specified method parameter
  @see #forMethodParameter(MethodParameter)