code: public List<String> genericsAsString() {
          final List<String> res = new ArrayList<String>();
          for (Type type : contextGenerics().values()) {
              res.add(toStringType(type));
          }
          return res;
      }
docs: {@code class A extends B<Object, C<Long>>}.
  <pre>{@code type(B.class).genericsAsString() == ["Object", "C<Long>"] }</pre>
  Note, that returned generics are completely resolved, e.g.
  {@code A extends B<Object> }, where {@code B<T> extends C<T, List<T>>},
  and when we call {@code type(C.class).genericsAsString() == ["Object", "List<Object>]}
  <p>
  Note: always returns all declared class generics, even inside method or constructor context, where
  class generics could be hidden by context generics with the same name.
  
  @return current generics string representation