code: private static Type resolveParameterizedTypeVariables(final ParameterizedType type,
                                                            final Map<String, Type> generics,
                                                            final boolean countPreservedVariables) {
  
          final boolean emptyContainerForClass = type.getActualTypeArguments().length == 0
                  && type.getOwnerType() == null;
          return emptyContainerForClass ? type.getRawType()
                  : new ParameterizedTypeImpl(type.getRawType(),
                  resolveTypeVariables(type.getActualTypeArguments(), generics, countPreservedVariables),
                  type.getOwnerType());
      }
docs: Situation when parameterized type contains 0 arguments is not normal (impossible normally, except inner
  classes), but may appear after {@link ru.vyarus.java.generics.resolver.util.type.instance.InstanceType}
  resolution (where parameterized type have to be used even for classes in order to store actual instance),
  but, as we repackage type here, we don't need wrapper anymore.
  
  @param type                    type to repackage
  @param generics                known generics
  @param countPreservedVariables true to replace {@link ExplicitTypeVariable} too
  @return type without {@link TypeVariable}'s