@Test
public void arrayComponentType() throws Exception {

    assertThat(Types.arrayComponentType(String[][].class), is(Matchers.<Type>equalTo(String[].class)));
    assertThat(Types.arrayComponentType(String[].class), is(Matchers.<Type>equalTo(String.class)));
    Type arrayOfMapOfStringIntegerType = TypesTest.class.getDeclaredField(
            "arrayOfMapOfStringInteger").getGenericType();
    Type mapOfStringIntegerType = TypesTest.class.getDeclaredField(
            "mapOfStringInteger").getGenericType();
    assertThat(Types.arrayComponentType(arrayOfMapOfStringIntegerType),
            is(equalTo(mapOfStringIntegerType)));
}