code: public static FullTypeInfo getFullTemplateType(Type type) {
  		if (type instanceof ParameterizedType) {
  			ParameterizedType parameterizedType = (ParameterizedType) type;
  
  			FullTypeInfo[] templateTypeInfos = new FullTypeInfo[parameterizedType.getActualTypeArguments().length];
  
  			for (int i = 0; i < parameterizedType.getActualTypeArguments().length; i++) {
  				templateTypeInfos[i] = getFullTemplateType(parameterizedType.getActualTypeArguments()[i]);
  			}
  
  			return new FullTypeInfo((Class<?>) parameterizedType.getRawType(), templateTypeInfos);
  		} else {
  			return new FullTypeInfo((Class<?>) type, null);
  		}
  	}
docs: Extract the full type information from the given type.
  
  @param type to be analyzed
  @return Full type information describing the given type