code: public static <T> T methodOn(Class<T> type, Object... parameters) {
  
  		Assert.notNull(type, "Given type must not be null!");
  
  		InvocationRecordingMethodInterceptor interceptor = new InvocationRecordingMethodInterceptor(type, parameters);
  		return getProxyWithInterceptor(type, interceptor, type.getClassLoader());
  	}
docs: Returns a proxy of the given type, backed by an {@link EmptyTargetSource} to simply drop method invocations but
  equips it with an {@link InvocationRecordingMethodInterceptor}. The interceptor records the last invocation and
  returns a proxy of the return type that also implements {@link LastInvocationAware} so that the last method
  invocation can be inspected. Parameters passed to the subsequent method invocation are generally neglected except
  the ones that might be mapped into the URI translation eventually, e.g.
  {@link org.springframework.web.bind.annotation.PathVariable} in the case of Spring MVC. Note, that the return types
  of the methods have to be capable to be proxied.
  
  @param type must not be {@literal null}.
  @param parameters parameters to extend template variables in the type level mapping.
  @return