code: public static ResolvableType forClass(Class<?> sourceClass, Class<?> implementationClass) {
          LettuceAssert.notNull(sourceClass, "Source class must not be null");
          ResolvableType asType = forType(implementationClass).as(sourceClass);
          return (asType == NONE ? forType(sourceClass) : asType);
      }
docs: Return a {@link ResolvableType} for the specified {@link Class} with a given implementation. For example:
  {@code ResolvableType.forClass(List.class, MyArrayList.class)}.
  
  @param sourceClass the source class (must not be {@code null}
  @param implementationClass the implementation class
  @return a {@link ResolvableType} for the specified class backed by the given implementation class
  @see #forClass(Class)
  @see #forClassWithGenerics(Class, Class...)