Material adicional: Curso Fundamentos de Java

Episodio 6

clone() no clona nada | Por qué Cloneable es un error de diseño en Java

super.clone() copia los campos bit a bit, y tu campo no es la lista: es la flecha que apunta a ella. Resultado: dos objetos, una sola lista, y nadie lo cuestiona porque el método se llama clone. El reemplazo cabe en una línea: un constructor de copia, y campos inmutables desde que nacen.