Agrupar Java 8 aninhado (multinível) por

Tenho poucas aulas como abaixo

class Pojo {
    List<Item> items;
}

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

class SubItem {
    V key2;
    Object otherAttribute1;
}

Quero agregar os itens com base emkey1 e para cada agregação, os subitens devem ser agregados porkey2 da seguinte maneira:

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

Como isso é possível com o Java 8Collectors.groupingBy aninhamento?

Eu estava tentando algo e preso no meio do caminho

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

Nota: Não é o mesmo que em cascatagroupingBy que faz agregação multinível com base em campos no mesmo objeto discutidoaqui

questionAnswers(1)

yourAnswerToTheQuestion