Grupo Java 8 anidado (multinivel) por

Tengo pocas clases como abajo

class Pojo {
    List<Item> items;
}

class Item {
    T key1;
    List<SubItem> subItems;
}

class SubItem {
    V key2;
    Object otherAttribute1;
}

Quiero agregar los artículos basados enkey1 y para cada agregación, los subpuntos se deben agregar porkey2 de la siguiente manera:

Map<T, Map<V, List<Subitem>>

¿Cómo es esto posible con Java 8?Collectors.groupingBy anidamiento?

Estaba intentando algo y me quedé a medio camino

pojo.getItems()
    .stream()
    .collect(
        Collectors.groupingBy(Item::getKey1, /* How to group by here SubItem::getKey2*/)
    );

Nota: Esto no es lo mismo que en cascadagroupingBy que hace la agregación multinivel basada en campos en el mismo objeto como se discutióaquí

Respuestas a la pregunta(1)

Su respuesta a la pregunta