Only the top level collection can be declared as an implementing class, while the nested ones must remain interfaces until you actually create instances:
List> rootList = new ArrayList>();
and then when you create an element to go in, you make it an implementation:
List nodeList = new ArrayList();
rootList.add(nodeList);