public final ArrayTypeInfo getArrayType(TypeInfo componentType, int dimension) {
assertTrue(componentType instanceof RawTypeInfo || componentType instanceof ParameterizedTypeInfo
|| componentType instanceof TypeVariableInfo, "unsupported componentType: %s", componentType);
assertTrue(dimension > 0, "dimension");
ArrayTypeInfo arrayType;
TypeInfo directComponentType = dimension == 1 ? componentType : getArrayType(componentType, dimension - 1);
if (componentType instanceof RawTypeInfo) {
Class<?> type = ClassUtil.getArrayClass(componentType.getRawType(), dimension);