code: public Type resolveType(final Type type) {
          return GenericsUtils.resolveTypeVariables(type, chooseContext(type).contextGenerics());
      }
docs: Replace all named variables in type with actual generics. For example, {@code ParameterizedType List<T>}
  would become {@code ParameterizedType List<String>} (assuming generic T is defined as String).
  More complex cases could arrive like {@code T[]} or {@code ? extends T}, but everything will be correctly
  replaced by actual (known) types, so you could be sure that returned type contains all known type information
  and does not contain variables.
  <p>
  Useful when complete type information is required elsewhere (for example, to create typed DI binding).
  <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).
  <p>
  This operation repackages original type and so may be used to get rid or custom type implementations.
  
  @param type type to resolve named generics in
  @return type without named generics (replaced by known actual types)
  @throws WrongGenericsContextException if type contains generics not visible from current class
  @see GenericsUtils#resolveTypeVariables(Type, Map) for implementation details