### Question:
Types { public static WildcardType upperBoundedWildcardType(Type upperBound) { Utils.checkNotNull(upperBound, "upperBound"); return wildcardType(new Type[] {upperBound}, null); } private  Types(); static TypeVariable<D> typeVariable(D declaration, String name,
		Type... bounds); static GenericArrayType genericArrayType(Type componentType); static ParameterizedType parameterizedType(Class<?> rawType, Type... actualTypeArguments); static WildcardType unboundedWildcardType(); static WildcardType upperBoundedWildcardType(Type upperBound); static WildcardType lowerBoundedWildcardType(Type lowerBound); static Type valueOf(String typeName); static Type valueOf(String typeName, Set<String> imports);  }### Answer:
@Test public void upperBoundedWildcardType() { WildcardType type = Types.upperBoundedWildcardType(Number.class); assertNotNull(type); assertArrayEquals(new Type[] {Number.class}, type.getUpperBounds()); assertArrayEquals(new Type[0], type.getLowerBounds()); assertEquals(type, numberUpperBoundedWildcardType); assertEquals(numberUpperBoundedWildcardType, type); }
@Test(expected = NullPointerException.class) public void upperBoundedWildcardTypeWithNullUpperBound() { try { Types.upperBoundedWildcardType(null); } catch (NullPointerException exception) { assertEquals("upperBound cannot be null", exception.getMessage()); throw exception; } }