code: public Class<?> resolveClass(final Type type) {
          return GenericsUtils.resolveClass(type, chooseContext(type).contextGenerics());
      }
docs: Useful for introspection to know exact class of type.
  <pre>{@code class A extends B<Long>;
  class B<T> {
  T doSmth();
  }}</pre>
  Resolving class of return type:
  {@code type(B.class).resolveClass(B.class.getMethod("doSmth").getGenericReturnType()) == Long.class}
  <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>
  Note: may return primitive because it might be important to differentiate actual value.
  Use {@link ru.vyarus.java.generics.resolver.util.TypeUtils#wrapPrimitive(Class)} to box possible primitive,
  if required.
  
  @param type type to resolve class
  @return resolved type class
  @throws WrongGenericsContextException if type contains generics not visible from current class