code: public static LinkedHashMap<String, Type> track(final Class<?> type,
                                                      final Class<?> known,
                                                      final LinkedHashMap<String, Type> knownGenerics) {
          if (type.getTypeParameters().length == 0 || knownGenerics.isEmpty()) {
              return EmptyGenericsMap.getInstance();
          }
  
          try {
              return trackGenerics(type, known, knownGenerics);
          } catch (Exception ex) {
              throw new GenericsTrackingException(type, known, knownGenerics, ex);
          }
      }
docs: Track root generics with known middle type generic. For example, {@code Some<P> extends Base<P>}
  and we know generic of {@code Base<T>} then it is possible to track that P == T and so known.
  
  @param type          root type to track generics for
  @param known         class or interface with known generics (in the middle of root type hierarchy)
  @param knownGenerics generics of known type
  @return root class generics (row types were impossible to track)
  @throws IllegalStateException when resolved generic of known type contradict with known generic value
  (type can't be casted to known type)
  @see GenericsUtils#trackGenerics(Type, Type) shortcut for most common case