@Override
    public Type[] getActualTypeArguments() {
        return typeArguments;
    }
@Test
    void getActualTypeArguments() {
        List<Type> typeArguments = Arrays.asList(String.class, Boolean.class, Long.class);
        EfestoClassKey keyListWithTypes = new EfestoClassKey(List.class, typeArguments.toArray(new Type[0]));
        Type[] retrieved = keyListWithTypes.getActualTypeArguments();
        assertThat(retrieved).isNotNull();
        assertThat(retrieved).hasSameSizeAs(typeArguments);
        assertThat(typeArguments).containsAll(Arrays.asList(retrieved));

        typeArguments = Collections.emptyList();
        EfestoClassKey keyListWithEmptyTypes = new EfestoClassKey(List.class, typeArguments.toArray(new Type[0]));
        retrieved = keyListWithEmptyTypes.getActualTypeArguments();
        assertThat(retrieved).isNotNull();
        assertThat(retrieved).isEmpty();

        EfestoClassKey keyListWithoutTypes = new EfestoClassKey(List.class);
        retrieved = keyListWithoutTypes.getActualTypeArguments();
        assertThat(retrieved).isNotNull();
        assertThat(retrieved).isEmpty();
    }