code: public List<Type> resolveTypeGenerics(final Type type) {
          final Map<String, Type> generics = chooseContext(type).contextGenerics();
          return Arrays.asList(
                  GenericsUtils.resolveTypeVariables(GenericsUtils.getGenerics(type, generics), generics));
      }
docs: Returns generics of type with all named variables replaced in types with actual generics. For example,
  {@code ParameterizedType Map<String, List<T>>} would become
  {@code [Class String, ParameterizedType List<String>]} (assumed generic T is defined as String).
  <p>
  Note: if type is Class then return raw generics definition (for consistency).
  <p>
  Useful when complete generic types are required.
  <p>
  Check if type containing generics, belonging to different context in current hierarchy and
  automatically change context to properly resolve generics. Fails when it is impossible to correctly
  resolve generics (preventing incorrect usage).
  
  @param type type to return resolved generics of
  @return type generics without variables
  @throws WrongGenericsContextException if type contains generics not visible from current class
  @see #resolveGenericsOf(Type) if just classes required