Here's a simple code, where I create nested ArrayList that contains ArrayList of String. I found a weird thing: when I clear the inner ArrayList, sizes of inner and outer ArrayLists decrease to 0.
public static void  main(String[] a)
{
    ArrayList<ArrayList<String>> arrayLists = new ArrayList<>();
    ArrayList<String> element = new ArrayList<>();
    element.add("1");
    element.add("2");
    arrayLists.add(element);
    System.out.println(arrayLists);
    element.clear();
    element.add("3");
    element.add("4");
    arrayLists.add(element);
    System.out.println(arrayLists);
    element.clear();
    element.add("5");
    element.add("6");
    arrayLists.add(element);
    System.out.println(arrayLists);
}
The output of that code is:
[[1, 2]]
[[3, 4], [3, 4]]
[[5, 6], [5, 6], [5, 6]]
I found out how to solve the problem and make output like:
[[1, 2]]
[[1, 2], [3, 4]]
[[1, 2], [3, 4], [5, 6]]
Instead of clearing inner ArrayList, I initialize it again. Here's the code:
public static void  main(String[] a)
    {
        ArrayList<ArrayList<String>> arrayLists = new ArrayList<>();
        ArrayList<String> element = new ArrayList<>();
        element.add("1");
        element.add("2");
        arrayLists.add(element);
        System.out.println(arrayLists);
        element = new ArrayList<>();
        element.add("3");
        element.add("4");
        arrayLists.add(element);
        System.out.println(arrayLists);
        element = new ArrayList<>();
        element.add("5");
        element.add("6");
        arrayLists.add(element);
        System.out.println(arrayLists);
    }
So the question is: is this intended to be like that (and what's the mechanism behind that) or is it a bug that needs to be reported? I've checked this code step by step using debugger, and I checked that outer ArrayList gets size 0 after element gets cleared.
