### Question:
TypeUtils { public static String toString(Type type) { return toString(type, ClassSerializers.QUALIFIED); } private  TypeUtils(); static boolean isAssignable(Type supertype, Type type); static boolean isInstance(Type type, Object object); static Type getErasedType(Type type); static Class<?> getErasedReferenceType(Type type); @Deprecated static Class<?> getRawType(Type type); static boolean isArray(Type type); static Type getComponentType(Type type); static Type getArrayType(Type componentType); static boolean isSimpleParameterizedType(Type type, Class<?> rawType); static Type getActualTypeArgument(Type type); static Type getResolvedSuperclass(Type type); static Type[] getResolvedInterfaces(Type type); static String toString(Type type); static String toString(Type type, ClassSerializer serializer); static String toUnqualifiedString(Type type); static String toSimpleString(Type type);  }### Answer:
@Test public void toStringWithClass() { assertEquals("java.lang.Integer", TypeUtils.toString(Integer.class)); }
@Test public void toStringWithArrayClass() { assertEquals("java.lang.Integer[]", TypeUtils.toString(Integer[].class)); }
@Test public void toStringWithUnboundedTypeVariable() { assertEquals("T", TypeUtils.toString(Types.typeVariable(declaration, "T"))); }
@Test public void toStringWithBoundedTypeVariable() { assertEquals("T extends java.lang.Number & java.lang.Comparable", TypeUtils.toString(Types.typeVariable(declaration, "T", Number.class, Comparable.class))); }
@Test @Ignore public void toStringWithRecursiveTypeVariable() { TypeVariable<GenericDeclaration> typeVariable = Types.typeVariable(declaration, "T", Types.parameterizedType(Comparable.class, Object.class)); assertEquals("T extends java.lang.Comparable<T>", TypeUtils.toString(typeVariable)); }
@Test public void toStringWithGenericArrayType() { assertEquals("java.lang.Integer[]", TypeUtils.toString(Types.genericArrayType(Integer.class))); }
@Test public void toStringWithParameterizedType() { assertEquals("java.util.List<java.lang.Integer>", TypeUtils.toString(Types.parameterizedType(List.class, Integer.class))); }
@Test public void toStringWithParameterizedTypeByTypeVariable() { assertEquals("java.util.List<T>", TypeUtils.toString(Types.parameterizedType(List.class, Types.typeVariable(declaration, "T")))); }
@Test @Ignore public void toStringWithParameterizedTypeByTypeVariableWithBounds() { assertEquals("java.util.List<T>", TypeUtils.toString(Types.parameterizedType(List.class, Types.typeVariable(declaration, "T", Number.class)))); }
@Test public void toStringWithUnboundedWildcardType() { assertEquals("?", TypeUtils.toString(Types.unboundedWildcardType())); }
@Test public void toStringWithUpperBoundedWildcardType() { assertEquals("? extends java.lang.Number", TypeUtils.toString(Types.upperBoundedWildcardType(Number.class))); }
@Test public void toStringWithLowerBoundedWildcardType() { assertEquals("? super java.lang.Integer", TypeUtils.toString(Types.lowerBoundedWildcardType(Integer.class))); }
@Test public void toStringWithNull() { assertEquals("null", TypeUtils.toString(null)); }