code: @SuppressWarnings("unchecked")
    public void printType(Type type)
      throws IOException
    {
      if (type instanceof Class<?>) {
        printTypeClass((Class<?>) type);
      } 
      else if (type instanceof ParameterizedType) {
        ParameterizedType parameterizedType = (ParameterizedType) type;
        
        printParameterizedType(parameterizedType);
      }
      else if (type instanceof WildcardType) {
        WildcardType wildcardType = (WildcardType) type;
        
        printWildcardType(wildcardType);
      }
      else if (type instanceof TypeVariable<?>) {
        TypeVariable<? extends GenericDeclaration> typeVariable = (TypeVariable<? extends GenericDeclaration>) type;
        
        printTypeVariable(typeVariable);
      }
      else if (type instanceof GenericArrayType) {
        GenericArrayType genericArrayType = (GenericArrayType) type;
  
        printType(genericArrayType.getGenericComponentType());
        print("[]");
      }
      else {
        throw new UnsupportedOperationException(type.getClass().getName() + " "
            + String.valueOf(type));
      }
    }
docs: Prints the Java representation of the type