code: public static Class<?> resolveRawArgument(Type genericType, Class<?> subType) {
      Class<?>[] arguments = resolveRawArguments(genericType, subType);
      if (arguments == null)
        return Unknown.class;
  
      if (arguments.length != 1)
        throw new IllegalArgumentException(
            "Expected 1 argument for generic type " + genericType + " but found " + arguments.length);
  
      return arguments[0];
    }
docs: Returns the raw class representing the argument for the {@code genericType} using type variable information from
  the {@code subType}. If {@code genericType} is an instance of class, then {@code genericType} is returned. If no
  arguments can be resolved then {@code Unknown.class} is returned.
  
  @param genericType to resolve argument for
  @param subType to extract type variable information from
  @return argument for {@code genericType} else {@link Unknown}.class if no type arguments are declared
  @throws IllegalArgumentException if more or less than one argument is resolved for the {@code genericType}