¿Cómo crear una colección profunda no modificable?

A menudo hago que un campo de colección no se pueda modificar antes de devolverlo desde un método getter:

private List<X> _xs;
....
List<X> getXs(){
  return Collections.unmodifiableList(_xs);
}

Pero no puedo pensar en una forma conveniente de hacerlo si la X anterior es en sí misma una Lista:

private List<List<Y>> _yLists;
.....
List<List<Y>> getYLists() {
  return Collections.unmodifiableList(_yLists);
}

El problema en lo anterior es, por supuesto, que aunque el cliente no puede modificar la Lista de listas, puede agregar / eliminar objetos Y de las listas incrustadas.

¿Alguna idea?

Respuestas a la pregunta(6)

Su respuesta a la pregunta