In the simple case, I can easily downgrade from a generic type to a wildcard type:
List<Integer> intList = new ArrayList<>();
List<?> wildList = intList; // I can cast to a List<?>
However, as my generics get more complicated:
List<List<Integer>> nestedIntList = new ArrayList<>();
List<List<?>> nestedWildList = nestIntList; // This does not compile
Is there a way that this can be made to compile? Am I missing some logical case that the compiler is protecting me from? Why can I not cast the inner type?