### Question:
Types { public static WildcardType lowerBoundedWildcardType(Type lowerBound) { Utils.checkNotNull(lowerBound, "lowerBound"); return wildcardType(null, new Type[] {lowerBound}); } 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 lowerBoundedWildcardType() { WildcardType type = Types.lowerBoundedWildcardType(Integer.class); assertNotNull(type); assertArrayEquals(new Type[] {Object.class}, type.getUpperBounds()); assertArrayEquals(new Type[] {Integer.class}, type.getLowerBounds()); assertEquals(type, integerLowerBoundedWildcardType); assertEquals(integerLowerBoundedWildcardType, type); }
@Test(expected = NullPointerException.class) public void lowerBoundedWildcardTypeWithNullLowerBound() { try { Types.lowerBoundedWildcardType(null); } catch (NullPointerException exception) { assertEquals("lowerBound cannot be null", exception.getMessage()); throw exception; } }