public static ParameterizedType parameterize(final Class<?> raw, final Type... typeArguments) {
        checkParameterizeMethodParameter(raw, typeArguments);
        return new ParameterizedTypeImpl(raw, raw.getEnclosingClass(), typeArguments);
    }
@Test
    void parameterize() {
        ParameterizedType stringComparableType = TypeUtils.parameterize(List.class, String.class);
        assertEquals("java.util.List<java.lang.String>", stringComparableType.toString());
        assertEquals(List.class, stringComparableType.getRawType());
        assertNull(stringComparableType.getOwnerType());
        assertEquals(1, stringComparableType.getActualTypeArguments().length);
        assertEquals(String.class, stringComparableType.getActualTypeArguments()[0]);
        
        ParameterizedType stringIntegerComparableType = TypeUtils.parameterize(Map.class, String.class, Integer.class);
        assertEquals("java.util.Map<java.lang.String, java.lang.Integer>", stringIntegerComparableType.toString());
        assertEquals(Map.class, stringIntegerComparableType.getRawType());
        assertNull(stringComparableType.getOwnerType());
        assertEquals(2, stringIntegerComparableType.getActualTypeArguments().length);
        assertEquals(String.class, stringIntegerComparableType.getActualTypeArguments()[0]);
        assertEquals(Integer.class, stringIntegerComparableType.getActualTypeArguments()[1]);
    }